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 2018/04/01 14:47:56 UTC

[01/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site 63f0a694b -> b707139ae


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index 8ada05d..91b57b2 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -655,8 +655,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<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/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/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/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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html b/testdevapidocs/org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html
index 79d7d56..61809c0 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <dl>
 <dt>Direct Known Subclasses:</dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/replication/TestAddToSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication">TestAddToSerialReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/TestSerialReplication.html" title="class in org.apache.hadoop.hbase.replication">TestSerialReplication</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/TestSerialReplicationFailover.html" title="class in org.apache.hadoop.hbase.replication">TestSerialReplicationFailover</a></dd>
+<dd><a href="../../../../../org/apache/hadoop/hbase/replication/TestAddToSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication">TestAddToSerialReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication">TestRemoveFromSerialReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/TestSerialReplication.html" title="class in org.apache.hadoop.hbase.replication">TestSerialReplication</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/TestSerialReplicationFailover.html" title="class in org.apache.hadoop.hbase.replication">TestSerialReplicationFailover</a></dd>
 </dl>
 <hr>
 <br>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/org/apache/hadoop/hbase/replication/TestPerTableCFReplication.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/replication/TestPerTableCFReplication.html b/testdevapidocs/org/apache/hadoop/hbase/replication/TestPerTableCFReplication.html
index 1cc217a..86ffc2b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/replication/TestPerTableCFReplication.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/replication/TestPerTableCFReplication.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/replication/TestNamespaceReplication.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationBase.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/replication/TestPerTableCFReplication.html" target="_top">Frames</a></li>
@@ -746,7 +746,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/replication/TestNamespaceReplication.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationBase.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/replication/TestPerTableCFReplication.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html b/testdevapidocs/org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html
new file mode 100644
index 0000000..5876125
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html
@@ -0,0 +1,404 @@
+<!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>TestRemoveFromSerialReplicationPeer (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="TestRemoveFromSerialReplicationPeer (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":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/TestRemoveFromSerialReplicationPeer.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/replication/TestPerTableCFReplication.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationBase.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" target="_top">Frames</a></li>
+<li><a href="TestRemoveFromSerialReplicationPeer.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.classes.inherited.from.class.org.apache.hadoop.hbase.replication.SerialReplicationTestBase">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.replication</div>
+<h2 title="Class TestRemoveFromSerialReplicationPeer" class="title">Class TestRemoveFromSerialReplicationPeer</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><a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html" title="class in org.apache.hadoop.hbase.replication">org.apache.hadoop.hbase.replication.SerialReplicationTestBase</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.replication.TestRemoveFromSerialReplicationPeer</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html#line.46">TestRemoveFromSerialReplicationPeer</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html" title="class in org.apache.hadoop.hbase.replication">SerialReplicationTestBase</a></pre>
+<div class="block">Testcase for HBASE-20296.</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>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.replication.SerialReplicationTestBase">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html" title="class in org.apache.hadoop.hbase.replication">SerialReplicationTestBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.LocalReplicationEndpoint.html" title="class in org.apache.hadoop.hbase.replication">SerialReplicationTestBase.LocalReplicationEndpoint</a></code></li>
+</ul>
+</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>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.replication.SerialReplicationTestBase">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html" title="class in org.apache.hadoop.hbase.replication">SerialReplicationTestBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html#CF">CF</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html#CQ">CQ</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html#FS">FS</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html#LOG_DIR">LOG_DIR</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html#logPath">logPath</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html#name">name</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html#PEER_ID">PEER_ID</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html#UTIL">UTIL</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html#WRITER">WRITER</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/replication/TestRemoveFromSerialReplicationPeer.html#TestRemoveFromSerialReplicationPeer--">TestRemoveFromSerialReplicationPeer</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="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>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html#setUp--">setUp</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html#testRemoveSerialFlag--">testRemoveSerialFlag</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html#testRemoveTable--">testRemoveTable</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html#waitUntilHasLastPushedSequenceId-org.apache.hadoop.hbase.client.RegionInfo-">waitUntilHasLastPushedSequenceId</a></span>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;region)</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.replication.SerialReplicationTestBase">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html" title="class in org.apache.hadoop.hbase.replication">SerialReplicationTestBase</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html#addPeer-boolean-">addPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html#checkOrder-int-">checkOrder</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html#createTable--">createTable</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html#enablePeerAndWaitUntilReplicationDone-int-">enablePeerAndWaitUntilReplicationDone</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html#moveRegion-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.regionserver.HRegionServer-">moveRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html#rollAllWALs--">rollAllWALs</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html#setUpBeforeClass-
 -">setUpBeforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html#setupWALWriter--">setupWALWriter</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html#tearDown--">tearDown</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html#tearDownAfterClass--">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html#waitUntilReplicationDone-int-">waitUntilReplicationDone</a></code></li>
+</ul>
+<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/ja
 va/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="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html#line.49">CLASS_RULE</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="TestRemoveFromSerialReplicationPeer--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestRemoveFromSerialReplicationPeer</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html#line.46">TestRemoveFromSerialReplicationPeer</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="setUp--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setUp</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html#line.53">setUp</a>()
+           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
+                  org.apache.hadoop.hbase.util.CommonFSUtils.StreamLacksCapabilityException</pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code>org.apache.hadoop.hbase.util.CommonFSUtils.StreamLacksCapabilityException</code></dd>
+</dl>
+</li>
+</ul>
+<a name="waitUntilHasLastPushedSequenceId-org.apache.hadoop.hbase.client.RegionInfo-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>waitUntilHasLastPushedSequenceId</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html#line.57">waitUntilHasLastPushedSequenceId</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;region)
+                                       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>
+<a name="testRemoveTable--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testRemoveTable</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html#line.75">testRemoveTable</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>
+<a name="testRemoveSerialFlag--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testRemoveSerialFlag</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html#line.101">testRemoveSerialFlag</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>
+</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/TestRemoveFromSerialReplicationPeer.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/replication/TestPerTableCFReplication.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationBase.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" target="_top">Frames</a></li>
+<li><a href="TestRemoveFromSerialReplicationPeer.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.classes.inherited.from.class.org.apache.hadoop.hbase.replication.SerialReplicationTestBase">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;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationBase.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationBase.html b/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationBase.html
index 6b5a57e..25f375a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationBase.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationBase.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/replication/TestPerTableCFReplication.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationChangingPeerRegionservers.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -697,7 +697,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/replication/TestPerTableCFReplication.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationChangingPeerRegionservers.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/org/apache/hadoop/hbase/replication/class-use/SerialReplicationTestBase.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/replication/class-use/SerialReplicationTestBase.html b/testdevapidocs/org/apache/hadoop/hbase/replication/class-use/SerialReplicationTestBase.html
index aece801..4504702 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/replication/class-use/SerialReplicationTestBase.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/replication/class-use/SerialReplicationTestBase.html
@@ -110,10 +110,16 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/TestSerialReplication.html" title="class in org.apache.hadoop.hbase.replication">TestSerialReplication</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication">TestRemoveFromSerialReplicationPeer</a></span></code>
+<div class="block">Testcase for HBASE-20296.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/TestSerialReplication.html" title="class in org.apache.hadoop.hbase.replication">TestSerialReplication</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/TestSerialReplicationFailover.html" title="class in org.apache.hadoop.hbase.replication">TestSerialReplicationFailover</a></span></code>&nbsp;</td>
 </tr>
 </tbody>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/org/apache/hadoop/hbase/replication/class-use/TestRemoveFromSerialReplicationPeer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/replication/class-use/TestRemoveFromSerialReplicationPeer.html b/testdevapidocs/org/apache/hadoop/hbase/replication/class-use/TestRemoveFromSerialReplicationPeer.html
new file mode 100644
index 0000000..ac2f5eb
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/replication/class-use/TestRemoveFromSerialReplicationPeer.html
@@ -0,0 +1,125 @@
+<!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>Uses of Class org.apache.hadoop.hbase.replication.TestRemoveFromSerialReplicationPeer (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.replication.TestRemoveFromSerialReplicationPeer (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</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><a href="../../../../../../org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<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>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/replication/class-use/TestRemoveFromSerialReplicationPeer.html" target="_top">Frames</a></li>
+<li><a href="TestRemoveFromSerialReplicationPeer.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>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.replication.TestRemoveFromSerialReplicationPeer" class="title">Uses of Class<br>org.apache.hadoop.hbase.replication.TestRemoveFromSerialReplicationPeer</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.replication.TestRemoveFromSerialReplicationPeer</div>
+<!-- ======= 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><a href="../../../../../../org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<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>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/replication/class-use/TestRemoveFromSerialReplicationPeer.html" target="_top">Frames</a></li>
+<li><a href="TestRemoveFromSerialReplicationPeer.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>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/org/apache/hadoop/hbase/replication/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/replication/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/replication/package-frame.html
index 842eba6..08b5e4f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/replication/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/replication/package-frame.html
@@ -22,6 +22,7 @@
 <li><a href="TestMultiSlaveReplication.html" title="class in org.apache.hadoop.hbase.replication" target="classFrame">TestMultiSlaveReplication</a></li>
 <li><a href="TestNamespaceReplication.html" title="class in org.apache.hadoop.hbase.replication" target="classFrame">TestNamespaceReplication</a></li>
 <li><a href="TestPerTableCFReplication.html" title="class in org.apache.hadoop.hbase.replication" target="classFrame">TestPerTableCFReplication</a></li>
+<li><a href="TestRemoveFromSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication" target="classFrame">TestRemoveFromSerialReplicationPeer</a></li>
 <li><a href="TestReplicationBase.html" title="class in org.apache.hadoop.hbase.replication" target="classFrame">TestReplicationBase</a></li>
 <li><a href="TestReplicationChangingPeerRegionservers.html" title="class in org.apache.hadoop.hbase.replication" target="classFrame">TestReplicationChangingPeerRegionservers</a></li>
 <li><a href="TestReplicationDisableInactivePeer.html" title="class in org.apache.hadoop.hbase.replication" target="classFrame">TestReplicationDisableInactivePeer</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/org/apache/hadoop/hbase/replication/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/replication/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/replication/package-summary.html
index 1edc3b1..162abbe 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/replication/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/replication/package-summary.html
@@ -127,177 +127,183 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication">TestRemoveFromSerialReplicationPeer</a></td>
+<td class="colLast">
+<div class="block">Testcase for HBASE-20296.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationBase.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationBase</a></td>
 <td class="colLast">
 <div class="block">This class is only a base for other integration-level replication tests.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationChangingPeerRegionservers.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationChangingPeerRegionservers</a></td>
 <td class="colLast">
 <div class="block">Test handling of changes to the number of a peer's regionservers.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationDisableInactivePeer.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationDisableInactivePeer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationDroppedTables.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationDroppedTables</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationEmptyWALRecovery.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationEmptyWALRecovery</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationEndpoint.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationEndpoint</a></td>
 <td class="colLast">
 <div class="block">Tests ReplicationSource and ReplicationEndpoint interactions</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationEndpoint.EverythingPassesWALEntryFilter.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationEndpoint.EverythingPassesWALEntryFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationEndpoint.EverythingPassesWALEntryFilterSubclass.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationEndpoint.EverythingPassesWALEntryFilterSubclass</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationEndpoint.InterClusterReplicationEndpointForTest.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationEndpoint.InterClusterReplicationEndpointForTest</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationEndpoint.ReplicationEndpointForTest.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationEndpoint.ReplicationEndpointForTest</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationEndpoint.ReplicationEndpointReturningFalse.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationEndpoint.ReplicationEndpointReturningFalse</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationEndpoint.ReplicationEndpointWithWALEntryFilter.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationEndpoint.ReplicationEndpointWithWALEntryFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationKillMasterRS.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationKillMasterRS</a></td>
 <td class="colLast">
 <div class="block">Runs the TestReplicationKillRS test and selects the RS to kill in the master cluster
  Do not add other tests in this class.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationKillMasterRSCompressed.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationKillMasterRSCompressed</a></td>
 <td class="colLast">
 <div class="block">Run the same test as TestReplicationKillMasterRS but with WAL compression enabled
  Do not add other tests in this class.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationKillRS.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationKillRS</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationKillSlaveRS.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationKillSlaveRS</a></td>
 <td class="colLast">
 <div class="block">Runs the TestReplicationKillRS test and selects the RS to kill in the slave cluster
  Do not add other tests in this class.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationPeerConfig</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationProcedureRetry.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationProcedureRetry</a></td>
 <td class="colLast">
 <div class="block">All the modification method will fail once in the test and should finally succeed.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationProcedureRetry.MockHMaster.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationProcedureRetry.MockHMaster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationSmallTests</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationSource.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationSource</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationSource.ShutdownDelayRegionServer.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationSource.ShutdownDelayRegionServer</a></td>
 <td class="colLast">
 <div class="block">Regionserver implementation that adds a delay on the graceful shutdown.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationStateBasic.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationStateBasic</a></td>
 <td class="colLast">
 <div class="block">White box testing for replication state interfaces.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationStateZKImpl.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationStateZKImpl</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationStatus.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationStatus</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationSyncUpTool.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationSyncUpTool</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationSyncUpToolWithBulkLoadedData.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationSyncUpToolWithBulkLoadedData</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationTrackerZKImpl.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationTrackerZKImpl</a></td>
 <td class="colLast">
 <div class="block">This class tests the ReplicationTrackerZKImpl class and ReplicationListener interface.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationUtil.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationUtil</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationWALEntryFilters.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationWALEntryFilters</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationWithTags.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationWithTags</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationWithTags.TestCoprocessorForTagsAtSink.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationWithTags.TestCoprocessorForTagsAtSink</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationWithTags.TestCoprocessorForTagsAtSource.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationWithTags.TestCoprocessorForTagsAtSource</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestSerialReplication.html" title="class in org.apache.hadoop.hbase.replication">TestSerialReplication</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestSerialReplicationFailover.html" title="class in org.apache.hadoop.hbase.replication">TestSerialReplicationFailover</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestVerifyReplication.html" title="class in org.apache.hadoop.hbase.replication">TestVerifyReplication</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestZKReplicationPeerStorage.html" title="class in org.apache.hadoop.hbase.replication">TestZKReplicationPeerStorage</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/replication/TestZKReplicationQueueStorage.html" title="class in org.apache.hadoop.hbase.replication">TestZKReplicationQueueStorage</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/org/apache/hadoop/hbase/replication/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/replication/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/replication/package-tree.html
index 0dc0b68..efc7c02 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/replication/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/replication/package-tree.html
@@ -123,6 +123,7 @@
 <li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">SerialReplicationTestBase</span></a>
 <ul>
 <li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/TestAddToSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">TestAddToSerialReplicationPeer</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">TestRemoveFromSerialReplicationPeer</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/TestSerialReplication.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">TestSerialReplication</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/TestSerialReplicationFailover.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">TestSerialReplicationFailover</span></a></li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
index 1a628fe..5936719 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
@@ -254,9 +254,9 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <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>
 <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/IntegrationTestBigLinkedList.Generator.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Generator.Counts</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index 6f4a2ec..3372329 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -2014,6 +2014,7 @@
 <li type="circle">org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/SerialReplicationTestBase.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">SerialReplicationTestBase</span></a>
 <ul>
 <li type="circle">org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestAddToSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">TestAddToSerialReplicationPeer</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">TestRemoveFromSerialReplicationPeer</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestSerialReplication.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">TestSerialReplication</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestSerialReplicationFailover.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">TestSerialReplicationFailover</span></a></li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestEnableTable.MasterSyncObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestEnableTable.MasterSyncObserver.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestEnableTable.MasterSyncObserver.html
index 25b55e2..4ddb632 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestEnableTable.MasterSyncObserver.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestEnableTable.MasterSyncObserver.html
@@ -194,8 +194,8 @@
 <span class="sourceLineNo">186</span>        fail("Got an exception while deleting " + tableName);<a name="line.186"></a>
 <span class="sourceLineNo">187</span>      }<a name="line.187"></a>
 <span class="sourceLineNo">188</span>      int rowCount = 0;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      try (ResultScanner scanner =<a name="line.189"></a>
-<span class="sourceLineNo">190</span>          metaTable.getScanner(MetaTableAccessor.getScanForTableName(TEST_UTIL.getConnection(), tableName))) {<a name="line.190"></a>
+<span class="sourceLineNo">189</span>      try (ResultScanner scanner = metaTable<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        .getScanner(MetaTableAccessor.getScanForTableName(TEST_UTIL.getConnection(), tableName))) {<a name="line.190"></a>
 <span class="sourceLineNo">191</span>        for (Result result : scanner) {<a name="line.191"></a>
 <span class="sourceLineNo">192</span>          LOG.info("Found when none expected: " + result);<a name="line.192"></a>
 <span class="sourceLineNo">193</span>          rowCount++;<a name="line.193"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestEnableTable.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestEnableTable.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestEnableTable.html
index 25b55e2..4ddb632 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestEnableTable.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestEnableTable.html
@@ -194,8 +194,8 @@
 <span class="sourceLineNo">186</span>        fail("Got an exception while deleting " + tableName);<a name="line.186"></a>
 <span class="sourceLineNo">187</span>      }<a name="line.187"></a>
 <span class="sourceLineNo">188</span>      int rowCount = 0;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      try (ResultScanner scanner =<a name="line.189"></a>
-<span class="sourceLineNo">190</span>          metaTable.getScanner(MetaTableAccessor.getScanForTableName(TEST_UTIL.getConnection(), tableName))) {<a name="line.190"></a>
+<span class="sourceLineNo">189</span>      try (ResultScanner scanner = metaTable<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        .getScanner(MetaTableAccessor.getScanForTableName(TEST_UTIL.getConnection(), tableName))) {<a name="line.190"></a>
 <span class="sourceLineNo">191</span>        for (Result result : scanner) {<a name="line.191"></a>
 <span class="sourceLineNo">192</span>          LOG.info("Found when none expected: " + result);<a name="line.192"></a>
 <span class="sourceLineNo">193</span>          rowCount++;<a name="line.193"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html
new file mode 100644
index 0000000..bb2102b
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html
@@ -0,0 +1,192 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.replication;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static org.junit.Assert.assertEquals;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.io.IOException;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.Collections;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HConstants;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.TableName;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.Waiter.ExplainingPredicate;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.client.Put;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.client.Table;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.testclassification.ReplicationTests;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.util.CommonFSUtils.StreamLacksCapabilityException;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.junit.Before;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.junit.ClassRule;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.junit.Test;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.junit.experimental.categories.Category;<a name="line.38"></a>
+<span class="sourceLineNo">039</span><a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableMap;<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>/**<a name="line.42"></a>
+<span class="sourceLineNo">043</span> * Testcase for HBASE-20296.<a name="line.43"></a>
+<span class="sourceLineNo">044</span> */<a name="line.44"></a>
+<span class="sourceLineNo">045</span>@Category({ ReplicationTests.class, MediumTests.class })<a name="line.45"></a>
+<span class="sourceLineNo">046</span>public class TestRemoveFromSerialReplicationPeer extends SerialReplicationTestBase {<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>  @ClassRule<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    HBaseClassTestRule.forClass(TestRemoveFromSerialReplicationPeer.class);<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>  @Before<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  public void setUp() throws IOException, StreamLacksCapabilityException {<a name="line.53"></a>
+<span class="sourceLineNo">054</span>    setupWALWriter();<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  }<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  private void waitUntilHasLastPushedSequenceId(RegionInfo region) throws Exception {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    ReplicationQueueStorage queueStorage =<a name="line.58"></a>
+<span class="sourceLineNo">059</span>      UTIL.getMiniHBaseCluster().getMaster().getReplicationPeerManager().getQueueStorage();<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    UTIL.waitFor(30000, new ExplainingPredicate&lt;Exception&gt;() {<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>      @Override<a name="line.62"></a>
+<span class="sourceLineNo">063</span>      public boolean evaluate() throws Exception {<a name="line.63"></a>
+<span class="sourceLineNo">064</span>        return queueStorage.getLastSequenceId(region.getEncodedName(), PEER_ID) &gt; 0;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      }<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>      @Override<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      public String explainFailure() throws Exception {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>        return "Still no last pushed sequence id for " + region;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      }<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    });<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  }<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>  @Test<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  public void testRemoveTable() throws Exception {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    TableName tableName = createTable();<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    ReplicationPeerConfig peerConfig = ReplicationPeerConfig.newBuilder()<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      .setClusterKey("127.0.0.1:2181:/hbase")<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      .setReplicationEndpointImpl(LocalReplicationEndpoint.class.getName())<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      .setReplicateAllUserTables(false)<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      .setTableCFsMap(ImmutableMap.of(tableName, Collections.emptyList())).setSerial(true).build();<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    UTIL.getAdmin().addReplicationPeer(PEER_ID, peerConfig, true);<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    try (Table table = UTIL.getConnection().getTable(tableName)) {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      for (int i = 0; i &lt; 100; i++) {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>        table.put(new Put(Bytes.toBytes(i)).addColumn(CF, CQ, Bytes.toBytes(i)));<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      }<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    }<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    RegionInfo region = UTIL.getMiniHBaseCluster().getRegions(tableName).get(0).getRegionInfo();<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    waitUntilHasLastPushedSequenceId(region);<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>    UTIL.getAdmin().updateReplicationPeerConfig(PEER_ID,<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      ReplicationPeerConfig.newBuilder(peerConfig).setTableCFsMap(Collections.emptyMap()).build());<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>    ReplicationQueueStorage queueStorage =<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      UTIL.getMiniHBaseCluster().getMaster().getReplicationPeerManager().getQueueStorage();<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    assertEquals(HConstants.NO_SEQNUM,<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      queueStorage.getLastSequenceId(region.getEncodedName(), PEER_ID));<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  }<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span>  @Test<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  public void testRemoveSerialFlag() throws Exception {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    TableName tableName = createTable();<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    addPeer(true);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    try (Table table = UTIL.getConnection().getTable(tableName)) {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      for (int i = 0; i &lt; 100; i++) {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>        table.put(new Put(Bytes.toBytes(i)).addColumn(CF, CQ, Bytes.toBytes(i)));<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      }<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    }<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    RegionInfo region = UTIL.getMiniHBaseCluster().getRegions(tableName).get(0).getRegionInfo();<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    waitUntilHasLastPushedSequenceId(region);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    UTIL.getAdmin().updateReplicationPeerConfig(PEER_ID, ReplicationPeerConfig<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      .newBuilder(UTIL.getAdmin().getReplicationPeerConfig(PEER_ID)).setSerial(false).build());<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    waitUntilReplicationDone(100);<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>    ReplicationQueueStorage queueStorage =<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      UTIL.getMiniHBaseCluster().getMaster().getReplicationPeerManager().getQueueStorage();<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    assertEquals(HConstants.NO_SEQNUM,<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      queueStorage.getLastSequenceId(region.getEncodedName(), PEER_ID));<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  }<a name="line.119"></a>
+<span class="sourceLineNo">120</span>}<a name="line.120"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[26/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.


Project: http://git-wip-us.apache.org/repos/asf/hbase-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase-site/commit/b707139a
Tree: http://git-wip-us.apache.org/repos/asf/hbase-site/tree/b707139a
Diff: http://git-wip-us.apache.org/repos/asf/hbase-site/diff/b707139a

Branch: refs/heads/asf-site
Commit: b707139ae6ba232ae72797d5d86ba7c5b82cc95f
Parents: 63f0a69
Author: jenkins <bu...@apache.org>
Authored: Sun Apr 1 14:47:37 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Sun Apr 1 14:47:37 2018 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |     4 +-
 apache_hbase_reference_guide.pdf                | 18859 +++++------
 book.html                                       |   187 +-
 bulk-loads.html                                 |     4 +-
 checkstyle-aggregate.html                       | 29706 ++++++++---------
 checkstyle.rss                                  |    22 +-
 coc.html                                        |     4 +-
 dependencies.html                               |     4 +-
 dependency-convergence.html                     |     4 +-
 dependency-info.html                            |     4 +-
 dependency-management.html                      |     4 +-
 devapidocs/constant-values.html                 |    14 +-
 devapidocs/index-all.html                       |    46 +-
 .../hbase/MetaTableAccessor.QueryType.html      |    18 +-
 .../apache/hadoop/hbase/MetaTableAccessor.html  |   219 +-
 .../hadoop/hbase/backup/package-tree.html       |     2 +-
 .../class-use/MetaTableAccessor.QueryType.html  |    14 +-
 .../class-use/MetaTableAccessor.Visitor.html    |    18 +-
 .../hadoop/hbase/class-use/TableName.html       |    41 +-
 .../hbase/client/class-use/Connection.html      |    41 +-
 .../hbase/client/class-use/TableDescriptor.html |    42 +-
 .../hadoop/hbase/client/package-tree.html       |    20 +-
 .../apache/hadoop/hbase/client/package-use.html |    82 +-
 .../hadoop/hbase/executor/package-tree.html     |     2 +-
 .../hadoop/hbase/filter/class-use/Filter.html   |    48 +-
 .../hadoop/hbase/filter/package-tree.html       |    10 +-
 .../apache/hadoop/hbase/filter/package-use.html |     5 +
 .../hadoop/hbase/io/hfile/package-tree.html     |     8 +-
 .../apache/hadoop/hbase/ipc/package-tree.html   |     2 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |     4 +-
 .../hbase/master/balancer/package-tree.html     |     2 +-
 .../procedure/class-use/MasterProcedureEnv.html |    81 +-
 .../master/replication/AddPeerProcedure.html    |    90 +-
 .../replication/DisablePeerProcedure.html       |     9 +-
 .../master/replication/EnablePeerProcedure.html |     9 +-
 .../master/replication/ModifyPeerProcedure.html |   129 +-
 .../master/replication/RemovePeerProcedure.html |     9 +-
 .../replication/UpdatePeerConfigProcedure.html  |   130 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    14 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     2 +-
 .../hadoop/hbase/quotas/package-tree.html       |     8 +-
 .../hadoop/hbase/regionserver/package-tree.html |    18 +-
 .../regionserver/querymatcher/package-tree.html |     2 +-
 .../replication/ReplicationQueueStorage.html    |    66 +-
 .../replication/ZKReplicationQueueStorage.html  |   135 +-
 .../class-use/ReplicationException.html         |    81 +-
 .../class-use/ReplicationPeerConfig.html        |     5 +
 .../class-use/ReplicationQueueStorage.html      |     6 +
 .../hbase/security/access/package-tree.html     |     2 +-
 .../hadoop/hbase/security/package-tree.html     |     2 +-
 .../apache/hadoop/hbase/util/package-tree.html  |    10 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     2 +-
 .../MetaTableAccessor.CloseableVisitor.html     |  1468 +-
 .../MetaTableAccessor.CollectAllVisitor.html    |  1468 +-
 .../MetaTableAccessor.CollectingVisitor.html    |  1468 +-
 .../MetaTableAccessor.DefaultVisitorBase.html   |  1468 +-
 .../hbase/MetaTableAccessor.QueryType.html      |  1468 +-
 ...aTableAccessor.ReplicationBarrierResult.html |  1468 +-
 .../MetaTableAccessor.TableVisitorBase.html     |  1468 +-
 .../hadoop/hbase/MetaTableAccessor.Visitor.html |  1468 +-
 .../apache/hadoop/hbase/MetaTableAccessor.html  |  1468 +-
 .../org/apache/hadoop/hbase/Version.html        |     6 +-
 .../master/replication/AddPeerProcedure.html    |   174 +-
 .../master/replication/ModifyPeerProcedure.html |   590 +-
 .../replication/UpdatePeerConfigProcedure.html  |   320 +-
 .../replication/ReplicationQueueStorage.html    |   205 +-
 .../replication/ZKReplicationQueueStorage.html  |  1245 +-
 .../hadoop/hbase/tool/Canary.Monitor.html       |     2 +-
 .../hadoop/hbase/tool/Canary.RegionMonitor.html |     2 +-
 .../hbase/tool/Canary.RegionServerMonitor.html  |     2 +-
 .../tool/Canary.RegionServerStdOutSink.html     |     2 +-
 .../hbase/tool/Canary.RegionServerTask.html     |     2 +-
 .../hbase/tool/Canary.RegionStdOutSink.html     |     2 +-
 .../hbase/tool/Canary.RegionTask.TaskType.html  |     2 +-
 .../hadoop/hbase/tool/Canary.RegionTask.html    |     2 +-
 .../apache/hadoop/hbase/tool/Canary.Sink.html   |     2 +-
 .../hadoop/hbase/tool/Canary.StdOutSink.html    |     2 +-
 .../hbase/tool/Canary.ZookeeperMonitor.html     |     2 +-
 .../hbase/tool/Canary.ZookeeperStdOutSink.html  |     2 +-
 .../hadoop/hbase/tool/Canary.ZookeeperTask.html |     2 +-
 .../org/apache/hadoop/hbase/tool/Canary.html    |     2 +-
 export_control.html                             |     4 +-
 index.html                                      |     4 +-
 integration.html                                |     4 +-
 issue-tracking.html                             |     4 +-
 license.html                                    |     4 +-
 mail-lists.html                                 |     4 +-
 metrics.html                                    |     4 +-
 old_news.html                                   |     4 +-
 plugin-management.html                          |     4 +-
 plugins.html                                    |     4 +-
 poweredbyhbase.html                             |     4 +-
 project-info.html                               |     4 +-
 project-reports.html                            |     4 +-
 project-summary.html                            |     4 +-
 pseudo-distributed.html                         |     4 +-
 replication.html                                |     4 +-
 resources.html                                  |     4 +-
 source-repository.html                          |     4 +-
 sponsors.html                                   |     4 +-
 supportingprojects.html                         |     4 +-
 team-list.html                                  |     4 +-
 testdevapidocs/allclasses-frame.html            |     1 +
 testdevapidocs/allclasses-noframe.html          |     1 +
 testdevapidocs/index-all.html                   |    16 +
 .../hbase/class-use/HBaseClassTestRule.html     |    52 +-
 .../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 |     2 +-
 .../replication/SerialReplicationTestBase.html  |     2 +-
 .../replication/TestPerTableCFReplication.html  |     4 +-
 .../TestRemoveFromSerialReplicationPeer.html    |   404 +
 .../hbase/replication/TestReplicationBase.html  |     4 +-
 .../class-use/SerialReplicationTestBase.html    |     8 +-
 .../TestRemoveFromSerialReplicationPeer.html    |   125 +
 .../hadoop/hbase/replication/package-frame.html |     1 +
 .../hbase/replication/package-summary.html      |    80 +-
 .../hadoop/hbase/replication/package-tree.html  |     1 +
 .../apache/hadoop/hbase/test/package-tree.html  |     2 +-
 testdevapidocs/overview-tree.html               |     1 +
 .../TestEnableTable.MasterSyncObserver.html     |     4 +-
 .../hadoop/hbase/client/TestEnableTable.html    |     4 +-
 .../TestRemoveFromSerialReplicationPeer.html    |   192 +
 125 files changed, 33889 insertions(+), 33151 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index d64d327..efc8e87 100644
--- a/acid-semantics.html
+++ b/acid-semantics.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -591,7 +591,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 


[12/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CollectingVisitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CollectingVisitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CollectingVisitor.html
index 6007f27..4ce6735 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CollectingVisitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CollectingVisitor.html
@@ -65,716 +65,716 @@
 <span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Table;<a name="line.57"></a>
 <span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.58"></a>
 <span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsResponse;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.slf4j.Logger;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.slf4j.LoggerFactory;<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.79"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsResponse;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.slf4j.Logger;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.slf4j.LoggerFactory;<a name="line.79"></a>
 <span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>/**<a name="line.81"></a>
-<span class="sourceLineNo">082</span> * &lt;p&gt;<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * Read/write operations on region and assignment information store in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * &lt;/p&gt;<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * &lt;p&gt;<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * Some of the methods of this class take ZooKeeperWatcher as a param. The only reason for this is<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * because when used on client-side (like from HBaseAdmin), we want to use short-living connection<a name="line.87"></a>
-<span class="sourceLineNo">088</span> * (opened before each operation, closed right after), while when used on HM or HRS (like in<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * AssignmentManager) we want permanent connection.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * &lt;/p&gt;<a name="line.90"></a>
-<span class="sourceLineNo">091</span> * &lt;p&gt;<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * HBASE-10070 adds a replicaId to HRI, meaning more than one HRI can be defined for the same table<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * range (table, startKey, endKey). For every range, there will be at least one HRI defined which is<a name="line.93"></a>
-<span class="sourceLineNo">094</span> * called default replica.<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * &lt;/p&gt;<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * &lt;p&gt;<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * Meta layout (as of 0.98 + HBASE-10070) is like:<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * &lt;pre&gt;<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * For each table there is single row in column family 'table' formatted:<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * &amp;lt;tableName&amp;gt; including namespace and columns are:<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * table: state             =&gt; contains table state<a name="line.102"></a>
-<span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * For each table range, there is a single row, formatted like:<a name="line.104"></a>
-<span class="sourceLineNo">105</span> * &amp;lt;tableName&amp;gt;,&amp;lt;startKey&amp;gt;,&amp;lt;regionId&amp;gt;,&amp;lt;encodedRegionName&amp;gt;.<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * This row corresponds to the regionName of the default region replica.<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Columns are:<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * info:regioninfo         =&gt; contains serialized HRI for the default region replica<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * info:server             =&gt; contains hostname:port (in string form) for the server hosting<a name="line.109"></a>
-<span class="sourceLineNo">110</span> *                            the default regionInfo replica<a name="line.110"></a>
-<span class="sourceLineNo">111</span> * info:server_&amp;lt;replicaId&amp;gt =&gt; contains hostname:port (in string form) for the server hosting<a name="line.111"></a>
-<span class="sourceLineNo">112</span> *                                 the regionInfo replica with replicaId<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * info:serverstartcode    =&gt; contains server start code (in binary long form) for the server<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *                            hosting the default regionInfo replica<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * info:serverstartcode_&amp;lt;replicaId&amp;gt =&gt; contains server start code (in binary long form) for<a name="line.115"></a>
-<span class="sourceLineNo">116</span> *                                          the server hosting the regionInfo replica with<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *                                          replicaId<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * info:seqnumDuringOpen   =&gt; contains seqNum (in binary long form) for the region at the time<a name="line.118"></a>
-<span class="sourceLineNo">119</span> *                             the server opened the region with default replicaId<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * info:seqnumDuringOpen_&amp;lt;replicaId&amp;gt =&gt; contains seqNum (in binary long form) for the region<a name="line.120"></a>
-<span class="sourceLineNo">121</span> *                                           at the time the server opened the region with<a name="line.121"></a>
-<span class="sourceLineNo">122</span> *                                           replicaId<a name="line.122"></a>
-<span class="sourceLineNo">123</span> * info:splitA             =&gt; contains a serialized HRI for the first daughter region if the<a name="line.123"></a>
-<span class="sourceLineNo">124</span> *                             region is split<a name="line.124"></a>
-<span class="sourceLineNo">125</span> * info:splitB             =&gt; contains a serialized HRI for the second daughter region if the<a name="line.125"></a>
+<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>/**<a name="line.83"></a>
+<span class="sourceLineNo">084</span> * &lt;p&gt;<a name="line.84"></a>
+<span class="sourceLineNo">085</span> * Read/write operations on region and assignment information store in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * &lt;/p&gt;<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * &lt;p&gt;<a name="line.87"></a>
+<span class="sourceLineNo">088</span> * Some of the methods of this class take ZooKeeperWatcher as a param. The only reason for this is<a name="line.88"></a>
+<span class="sourceLineNo">089</span> * because when used on client-side (like from HBaseAdmin), we want to use short-living connection<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * (opened before each operation, closed right after), while when used on HM or HRS (like in<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * AssignmentManager) we want permanent connection.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * &lt;/p&gt;<a name="line.92"></a>
+<span class="sourceLineNo">093</span> * &lt;p&gt;<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * HBASE-10070 adds a replicaId to HRI, meaning more than one HRI can be defined for the same table<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * range (table, startKey, endKey). For every range, there will be at least one HRI defined which is<a name="line.95"></a>
+<span class="sourceLineNo">096</span> * called default replica.<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * &lt;/p&gt;<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * &lt;p&gt;<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * Meta layout (as of 0.98 + HBASE-10070) is like:<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * &lt;pre&gt;<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * For each table there is single row in column family 'table' formatted:<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * &amp;lt;tableName&amp;gt; including namespace and columns are:<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * table: state             =&gt; contains table state<a name="line.104"></a>
+<span class="sourceLineNo">105</span> *<a name="line.105"></a>
+<span class="sourceLineNo">106</span> * For each table range, there is a single row, formatted like:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * &amp;lt;tableName&amp;gt;,&amp;lt;startKey&amp;gt;,&amp;lt;regionId&amp;gt;,&amp;lt;encodedRegionName&amp;gt;.<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * This row corresponds to the regionName of the default region replica.<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * Columns are:<a name="line.109"></a>
+<span class="sourceLineNo">110</span> * info:regioninfo         =&gt; contains serialized HRI for the default region replica<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * info:server             =&gt; contains hostname:port (in string form) for the server hosting<a name="line.111"></a>
+<span class="sourceLineNo">112</span> *                            the default regionInfo replica<a name="line.112"></a>
+<span class="sourceLineNo">113</span> * info:server_&amp;lt;replicaId&amp;gt =&gt; contains hostname:port (in string form) for the server hosting<a name="line.113"></a>
+<span class="sourceLineNo">114</span> *                                 the regionInfo replica with replicaId<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * info:serverstartcode    =&gt; contains server start code (in binary long form) for the server<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *                            hosting the default regionInfo replica<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * info:serverstartcode_&amp;lt;replicaId&amp;gt =&gt; contains server start code (in binary long form) for<a name="line.117"></a>
+<span class="sourceLineNo">118</span> *                                          the server hosting the regionInfo replica with<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *                                          replicaId<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * info:seqnumDuringOpen   =&gt; contains seqNum (in binary long form) for the region at the time<a name="line.120"></a>
+<span class="sourceLineNo">121</span> *                             the server opened the region with default replicaId<a name="line.121"></a>
+<span class="sourceLineNo">122</span> * info:seqnumDuringOpen_&amp;lt;replicaId&amp;gt =&gt; contains seqNum (in binary long form) for the region<a name="line.122"></a>
+<span class="sourceLineNo">123</span> *                                           at the time the server opened the region with<a name="line.123"></a>
+<span class="sourceLineNo">124</span> *                                           replicaId<a name="line.124"></a>
+<span class="sourceLineNo">125</span> * info:splitA             =&gt; contains a serialized HRI for the first daughter region if the<a name="line.125"></a>
 <span class="sourceLineNo">126</span> *                             region is split<a name="line.126"></a>
-<span class="sourceLineNo">127</span> * info:mergeA             =&gt; contains a serialized HRI for the first parent region if the<a name="line.127"></a>
-<span class="sourceLineNo">128</span> *                             region is the result of a merge<a name="line.128"></a>
-<span class="sourceLineNo">129</span> * info:mergeB             =&gt; contains a serialized HRI for the second parent region if the<a name="line.129"></a>
+<span class="sourceLineNo">127</span> * info:splitB             =&gt; contains a serialized HRI for the second daughter region if the<a name="line.127"></a>
+<span class="sourceLineNo">128</span> *                             region is split<a name="line.128"></a>
+<span class="sourceLineNo">129</span> * info:mergeA             =&gt; contains a serialized HRI for the first parent region if the<a name="line.129"></a>
 <span class="sourceLineNo">130</span> *                             region is the result of a merge<a name="line.130"></a>
-<span class="sourceLineNo">131</span> * &lt;/pre&gt;<a name="line.131"></a>
-<span class="sourceLineNo">132</span> * &lt;/p&gt;<a name="line.132"></a>
-<span class="sourceLineNo">133</span> * &lt;p&gt;<a name="line.133"></a>
-<span class="sourceLineNo">134</span> * The actual layout of meta should be encapsulated inside MetaTableAccessor methods, and should not<a name="line.134"></a>
-<span class="sourceLineNo">135</span> * leak out of it (through Result objects, etc)<a name="line.135"></a>
-<span class="sourceLineNo">136</span> * &lt;/p&gt;<a name="line.136"></a>
-<span class="sourceLineNo">137</span> */<a name="line.137"></a>
-<span class="sourceLineNo">138</span>@InterfaceAudience.Private<a name="line.138"></a>
-<span class="sourceLineNo">139</span>public class MetaTableAccessor {<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static final Logger LOG = LoggerFactory.getLogger(MetaTableAccessor.class);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static final Logger METALOG = LoggerFactory.getLogger("org.apache.hadoop.hbase.META");<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static final byte[] META_REGION_PREFIX;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  static {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    // Copy the prefix from FIRST_META_REGIONINFO into META_REGION_PREFIX.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    // FIRST_META_REGIONINFO == 'hbase:meta,,1'.  META_REGION_PREFIX == 'hbase:meta,'<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    int len = RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName().length - 2;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    META_REGION_PREFIX = new byte [len];<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    System.arraycopy(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName(), 0,<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      META_REGION_PREFIX, 0, len);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>  @VisibleForTesting<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  public static final byte[] REPLICATION_PARENT_QUALIFIER = Bytes.toBytes("parent");<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  private static final byte ESCAPE_BYTE = (byte) 0xFF;<a name="line.157"></a>
+<span class="sourceLineNo">131</span> * info:mergeB             =&gt; contains a serialized HRI for the second parent region if the<a name="line.131"></a>
+<span class="sourceLineNo">132</span> *                             region is the result of a merge<a name="line.132"></a>
+<span class="sourceLineNo">133</span> * &lt;/pre&gt;<a name="line.133"></a>
+<span class="sourceLineNo">134</span> * &lt;/p&gt;<a name="line.134"></a>
+<span class="sourceLineNo">135</span> * &lt;p&gt;<a name="line.135"></a>
+<span class="sourceLineNo">136</span> * The actual layout of meta should be encapsulated inside MetaTableAccessor methods, and should not<a name="line.136"></a>
+<span class="sourceLineNo">137</span> * leak out of it (through Result objects, etc)<a name="line.137"></a>
+<span class="sourceLineNo">138</span> * &lt;/p&gt;<a name="line.138"></a>
+<span class="sourceLineNo">139</span> */<a name="line.139"></a>
+<span class="sourceLineNo">140</span>@InterfaceAudience.Private<a name="line.140"></a>
+<span class="sourceLineNo">141</span>public class MetaTableAccessor {<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static final Logger LOG = LoggerFactory.getLogger(MetaTableAccessor.class);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static final Logger METALOG = LoggerFactory.getLogger("org.apache.hadoop.hbase.META");<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static final byte[] META_REGION_PREFIX;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  static {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    // Copy the prefix from FIRST_META_REGIONINFO into META_REGION_PREFIX.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    // FIRST_META_REGIONINFO == 'hbase:meta,,1'.  META_REGION_PREFIX == 'hbase:meta,'<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    int len = RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName().length - 2;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    META_REGION_PREFIX = new byte [len];<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    System.arraycopy(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName(), 0,<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      META_REGION_PREFIX, 0, len);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  }<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span>  @VisibleForTesting<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  public static final byte[] REPLICATION_PARENT_QUALIFIER = Bytes.toBytes("parent");<a name="line.157"></a>
 <span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  private static final byte SEPARATED_BYTE = 0x00;<a name="line.159"></a>
+<span class="sourceLineNo">159</span>  private static final byte ESCAPE_BYTE = (byte) 0xFF;<a name="line.159"></a>
 <span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  /**<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * Lists all of the table regions currently in META.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * Deprecated, keep there until some test use this.<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * @param connection what we will use<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * @param tableName table to list<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @return Map of all user-space regions to servers<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * @deprecated use {@link #getTableRegionsAndLocations}, region can have multiple locations<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   */<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  @Deprecated<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  public static NavigableMap&lt;RegionInfo, ServerName&gt; allTableRegions(<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      Connection connection, final TableName tableName) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    final NavigableMap&lt;RegionInfo, ServerName&gt; regions = new TreeMap&lt;&gt;();<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    Visitor visitor = new TableVisitorBase(tableName) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      public boolean visitInternal(Result result) throws IOException {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        RegionLocations locations = getRegionLocations(result);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>        if (locations == null) return true;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        for (HRegionLocation loc : locations.getRegionLocations()) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          if (loc != null) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>            RegionInfo regionInfo = loc.getRegionInfo();<a name="line.180"></a>
-<span class="sourceLineNo">181</span>            regions.put(regionInfo, loc.getServerName());<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>        return true;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    };<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    scanMetaForTableRegions(connection, visitor, tableName);<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    return regions;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>  @InterfaceAudience.Private<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  public enum QueryType {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    ALL(HConstants.TABLE_FAMILY, HConstants.CATALOG_FAMILY),<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    REGION(HConstants.CATALOG_FAMILY),<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    TABLE(HConstants.TABLE_FAMILY),<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    REPLICATION(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>    private final byte[][] families;<a name="line.198"></a>
+<span class="sourceLineNo">161</span>  private static final byte SEPARATED_BYTE = 0x00;<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  /**<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   * Lists all of the table regions currently in META.<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * Deprecated, keep there until some test use this.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * @param connection what we will use<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * @param tableName table to list<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * @return Map of all user-space regions to servers<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * @deprecated use {@link #getTableRegionsAndLocations}, region can have multiple locations<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  @Deprecated<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public static NavigableMap&lt;RegionInfo, ServerName&gt; allTableRegions(<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      Connection connection, final TableName tableName) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    final NavigableMap&lt;RegionInfo, ServerName&gt; regions = new TreeMap&lt;&gt;();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    Visitor visitor = new TableVisitorBase(tableName) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      @Override<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      public boolean visitInternal(Result result) throws IOException {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        RegionLocations locations = getRegionLocations(result);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        if (locations == null) return true;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        for (HRegionLocation loc : locations.getRegionLocations()) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          if (loc != null) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            RegionInfo regionInfo = loc.getRegionInfo();<a name="line.182"></a>
+<span class="sourceLineNo">183</span>            regions.put(regionInfo, loc.getServerName());<a name="line.183"></a>
+<span class="sourceLineNo">184</span>          }<a name="line.184"></a>
+<span class="sourceLineNo">185</span>        }<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        return true;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    };<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    scanMetaForTableRegions(connection, visitor, tableName);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    return regions;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  @InterfaceAudience.Private<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  public enum QueryType {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    ALL(HConstants.TABLE_FAMILY, HConstants.CATALOG_FAMILY),<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    REGION(HConstants.CATALOG_FAMILY),<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    TABLE(HConstants.TABLE_FAMILY),<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    REPLICATION(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.198"></a>
 <span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>    QueryType(byte[]... families) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      this.families = families;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span>    byte[][] getFamilies() {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return this.families;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private static final Pattern SERVER_COLUMN_PATTERN<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    = Pattern.compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  ////////////////////////<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  // Reading operations //<a name="line.217"></a>
+<span class="sourceLineNo">200</span>    private final byte[][] families;<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    QueryType(byte[]... families) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      this.families = families;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>    byte[][] getFamilies() {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      return this.families;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    }<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  private static final Pattern SERVER_COLUMN_PATTERN<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    = Pattern.compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
 <span class="sourceLineNo">218</span>  ////////////////////////<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>  /**<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   * @param connection connection we're using<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * @param visitor Visitor invoked against each row in regions family.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  public static void fullScanRegions(Connection connection,<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      final Visitor visitor)<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      throws IOException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    scanMeta(connection, null, null, QueryType.REGION, visitor);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  /**<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   * @param connection connection we're using<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public static List&lt;Result&gt; fullScanRegions(Connection connection)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      throws IOException {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    return fullScan(connection, QueryType.REGION);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  /**<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for tables.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   * @param connection connection we're using<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * @param visitor Visitor invoked against each row in tables family.<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  public static void fullScanTables(Connection connection,<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      final Visitor visitor)<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      throws IOException {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    scanMeta(connection, null, null, QueryType.TABLE, visitor);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>  /**<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   * @param connection connection we're using<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   * @param type scanned part of meta<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * @return List of {@link Result}<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  public static List&lt;Result&gt; fullScan(Connection connection, QueryType type)<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    throws IOException {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    CollectAllVisitor v = new CollectAllVisitor();<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    scanMeta(connection, null, null, type, v);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return v.getResults();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>  /**<a name="line.264"></a>
-<span class="sourceLineNo">265</span>   * Callers should call close on the returned {@link Table} instance.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>   * @param connection connection we're using to access Meta<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   * @return An {@link Table} for &lt;code&gt;hbase:meta&lt;/code&gt;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   */<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  public static Table getMetaHTable(final Connection connection)<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  throws IOException {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // We used to pass whole CatalogTracker in here, now we just pass in Connection<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    if (connection == null) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      throw new NullPointerException("No connection");<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    } else if (connection.isClosed()) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      throw new IOException("connection is closed");<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return connection.getTable(TableName.META_TABLE_NAME);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>  /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * @param t Table to use (will be closed when done).<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   * @param g Get to run<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   */<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  private static Result get(final Table t, final Get g) throws IOException {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    if (t == null) return null;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    try {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      return t.get(g);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    } finally {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      t.close();<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    }<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  /**<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * Gets the region info and assignment for the specified region.<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @param connection connection we're using<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * @param regionName Region to lookup.<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   * @return Location and RegionInfo for &lt;code&gt;regionName&lt;/code&gt;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>   * @deprecated use {@link #getRegionLocation(Connection, byte[])} instead<a name="line.298"></a>
-<span class="sourceLineNo">299</span>   */<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  @Deprecated<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  public static Pair&lt;RegionInfo, ServerName&gt; getRegion(Connection connection, byte [] regionName)<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    throws IOException {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    HRegionLocation location = getRegionLocation(connection, regionName);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    return location == null<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      ? null<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      : new Pair&lt;&gt;(location.getRegionInfo(), location.getServerName());<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  /**<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * Returns the HRegionLocation from meta for the given region<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * @param connection connection we're using<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * @param regionName region we're looking for<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * @return HRegionLocation for the given region<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public static HRegionLocation getRegionLocation(Connection connection, byte[] regionName)<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      throws IOException {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    byte[] row = regionName;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    RegionInfo parsedInfo = null;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    try {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      parsedInfo = parseRegionInfoFromRegionName(regionName);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      row = getMetaKeyForRegion(parsedInfo);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    } catch (Exception parseEx) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      // Ignore. This is used with tableName passed as regionName.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    Get get = new Get(row);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    Result r = get(getMetaHTable(connection), get);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    RegionLocations locations = getRegionLocations(r);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    return locations == null ? null<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      : locations.getRegionLocation(parsedInfo == null ? 0 : parsedInfo.getReplicaId());<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  /**<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * Returns the HRegionLocation from meta for the given region<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * @param connection connection we're using<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   * @param regionInfo region information<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * @return HRegionLocation for the given region<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   */<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static HRegionLocation getRegionLocation(Connection connection, RegionInfo regionInfo)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      throws IOException {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    byte[] row = getMetaKeyForRegion(regionInfo);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    Get get = new Get(row);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    Result r = get(getMetaHTable(connection), get);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    return getRegionLocation(r, regionInfo, regionInfo.getReplicaId());<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>  /** Returns the row key to use for this regionInfo */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public static byte[] getMetaKeyForRegion(RegionInfo regionInfo) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    return RegionReplicaUtil.getRegionInfoForDefaultReplica(regionInfo).getRegionName();<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /** Returns an HRI parsed from this regionName. Not all the fields of the HRI<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * is stored in the name, so the returned object should only be used for the fields<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * in the regionName.<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  public static RegionInfo parseRegionInfoFromRegionName(byte[] regionName) throws IOException {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    byte[][] fields = RegionInfo.parseRegionName(regionName);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    long regionId = Long.parseLong(Bytes.toString(fields[2]));<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    int replicaId = fields.length &gt; 3 ? Integer.parseInt(Bytes.toString(fields[3]), 16) : 0;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    return RegionInfoBuilder.newBuilder(TableName.valueOf(fields[0]))<a name="line.361"></a>
-<span class="sourceLineNo">362</span>              .setStartKey(fields[1])<a name="line.362"></a>
-<span class="sourceLineNo">363</span>              .setEndKey(fields[2])<a name="line.363"></a>
-<span class="sourceLineNo">364</span>              .setSplit(false)<a name="line.364"></a>
-<span class="sourceLineNo">365</span>              .setRegionId(regionId)<a name="line.365"></a>
-<span class="sourceLineNo">366</span>              .setReplicaId(replicaId)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>              .build();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * Gets the result in hbase:meta for the specified region.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * @param connection connection we're using<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * @param regionName region we're looking for<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * @return result of the specified region<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   */<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  public static Result getRegionResult(Connection connection,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      byte[] regionName) throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    Get get = new Get(regionName);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    return get(getMetaHTable(connection), get);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span>  /**<a name="line.383"></a>
-<span class="sourceLineNo">384</span>   * Get regions from the merge qualifier of the specified merged region<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * @return null if it doesn't contain merge qualifier, else two merge regions<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   */<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Nullable<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public static Pair&lt;RegionInfo, RegionInfo&gt; getRegionsFromMergeQualifier(<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      Connection connection, byte[] regionName) throws IOException {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    Result result = getRegionResult(connection, regionName);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    RegionInfo mergeA = getRegionInfo(result, HConstants.MERGEA_QUALIFIER);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    RegionInfo mergeB = getRegionInfo(result, HConstants.MERGEB_QUALIFIER);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    if (mergeA == null &amp;&amp; mergeB == null) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      return null;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    return new Pair&lt;&gt;(mergeA, mergeB);<a name="line.396"></a>
-<span class="sourceLineNo">397</span> }<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  /**<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * Checks if the specified table exists.  Looks at the hbase:meta table hosted on<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * the specified server.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param connection connection we're using<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param tableName table to check<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @return true if the table exists in meta, false if not<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  public static boolean tableExists(Connection connection,<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      final TableName tableName)<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  throws IOException {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    // Catalog tables always exist.<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return tableName.equals(TableName.META_TABLE_NAME)<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        || getTableState(connection, tableName) != null;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  /**<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * Lists all of the regions currently in META.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   *<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param connection to connect with<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param excludeOfflinedSplitParents False if we are to include offlined/splitparents regions,<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   *                                    true and we'll leave out offlined regions from returned list<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * @return List of all user-space regions.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   */<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  @VisibleForTesting<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  public static List&lt;RegionInfo&gt; getAllRegions(Connection connection,<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      boolean excludeOfflinedSplitParents)<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      throws IOException {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result;<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>    result = getTableRegionsAndLocations(connection, null,<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        excludeOfflinedSplitParents);<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>    return getListOfRegionInfos(result);<a name="line.431"></a>
+<span class="sourceLineNo">219</span>  // Reading operations //<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  ////////////////////////<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>  /**<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * @param connection connection we're using<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * @param visitor Visitor invoked against each row in regions family.<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   */<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public static void fullScanRegions(Connection connection,<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      final Visitor visitor)<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      throws IOException {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    scanMeta(connection, null, null, QueryType.REGION, visitor);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>  }<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>  /**<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @param connection connection we're using<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  public static List&lt;Result&gt; fullScanRegions(Connection connection)<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      throws IOException {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return fullScan(connection, QueryType.REGION);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  /**<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for tables.<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * @param connection connection we're using<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * @param visitor Visitor invoked against each row in tables family.<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   */<a name="line.246"></a>
+<span class="sourceLineNo">247</span>  public static void fullScanTables(Connection connection,<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      final Visitor visitor)<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    scanMeta(connection, null, null, QueryType.TABLE, visitor);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  }<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>  /**<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * @param connection connection we're using<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   * @param type scanned part of meta<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   * @return List of {@link Result}<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  public static List&lt;Result&gt; fullScan(Connection connection, QueryType type)<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    throws IOException {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    CollectAllVisitor v = new CollectAllVisitor();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    scanMeta(connection, null, null, type, v);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    return v.getResults();<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  }<a name="line.264"></a>
+<span class="sourceLineNo">265</span><a name="line.265"></a>
+<span class="sourceLineNo">266</span>  /**<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   * Callers should call close on the returned {@link Table} instance.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   * @param connection connection we're using to access Meta<a name="line.268"></a>
+<span class="sourceLineNo">269</span>   * @return An {@link Table} for &lt;code&gt;hbase:meta&lt;/code&gt;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>   */<a name="line.270"></a>
+<span class="sourceLineNo">271</span>  public static Table getMetaHTable(final Connection connection)<a name="line.271"></a>
+<span class="sourceLineNo">272</span>  throws IOException {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // We used to pass whole CatalogTracker in here, now we just pass in Connection<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    if (connection == null) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      throw new NullPointerException("No connection");<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    } else if (connection.isClosed()) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      throw new IOException("connection is closed");<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    return connection.getTable(TableName.META_TABLE_NAME);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>  /**<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * @param t Table to use (will be closed when done).<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   * @param g Get to run<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   */<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  private static Result get(final Table t, final Get g) throws IOException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    if (t == null) return null;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    try {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      return t.get(g);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    } finally {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      t.close();<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>  /**<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   * Gets the region info and assignment for the specified region.<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   * @param connection connection we're using<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * @param regionName Region to lookup.<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   * @return Location and RegionInfo for &lt;code&gt;regionName&lt;/code&gt;<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   * @deprecated use {@link #getRegionLocation(Connection, byte[])} instead<a name="line.300"></a>
+<span class="sourceLineNo">301</span>   */<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  @Deprecated<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  public static Pair&lt;RegionInfo, ServerName&gt; getRegion(Connection connection, byte [] regionName)<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    throws IOException {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    HRegionLocation location = getRegionLocation(connection, regionName);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    return location == null<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      ? null<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      : new Pair&lt;&gt;(location.getRegionInfo(), location.getServerName());<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>  /**<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   * Returns the HRegionLocation from meta for the given region<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * @param connection connection we're using<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   * @param regionName region we're looking for<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * @return HRegionLocation for the given region<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   */<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public static HRegionLocation getRegionLocation(Connection connection, byte[] regionName)<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      throws IOException {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    byte[] row = regionName;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    RegionInfo parsedInfo = null;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    try {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      parsedInfo = parseRegionInfoFromRegionName(regionName);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      row = getMetaKeyForRegion(parsedInfo);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    } catch (Exception parseEx) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      // Ignore. This is used with tableName passed as regionName.<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    Get get = new Get(row);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    Result r = get(getMetaHTable(connection), get);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    RegionLocations locations = getRegionLocations(r);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    return locations == null ? null<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      : locations.getRegionLocation(parsedInfo == null ? 0 : parsedInfo.getReplicaId());<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>  /**<a name="line.335"></a>
+<span class="sourceLineNo">336</span>   * Returns the HRegionLocation from meta for the given region<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * @param connection connection we're using<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * @param regionInfo region information<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * @return HRegionLocation for the given region<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   */<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  public static HRegionLocation getRegionLocation(Connection connection, RegionInfo regionInfo)<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      throws IOException {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    byte[] row = getMetaKeyForRegion(regionInfo);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    Get get = new Get(row);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    Result r = get(getMetaHTable(connection), get);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    return getRegionLocation(r, regionInfo, regionInfo.getReplicaId());<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  /** Returns the row key to use for this regionInfo */<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  public static byte[] getMetaKeyForRegion(RegionInfo regionInfo) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    return RegionReplicaUtil.getRegionInfoForDefaultReplica(regionInfo).getRegionName();<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  /** Returns an HRI parsed from this regionName. Not all the fields of the HRI<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * is stored in the name, so the returned object should only be used for the fields<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * in the regionName.<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   */<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  public static RegionInfo parseRegionInfoFromRegionName(byte[] regionName) throws IOException {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    byte[][] fields = RegionInfo.parseRegionName(regionName);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    long regionId = Long.parseLong(Bytes.toString(fields[2]));<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    int replicaId = fields.length &gt; 3 ? Integer.parseInt(Bytes.toString(fields[3]), 16) : 0;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    return RegionInfoBuilder.newBuilder(TableName.valueOf(fields[0]))<a name="line.363"></a>
+<span class="sourceLineNo">364</span>              .setStartKey(fields[1])<a name="line.364"></a>
+<span class="sourceLineNo">365</span>              .setEndKey(fields[2])<a name="line.365"></a>
+<span class="sourceLineNo">366</span>              .setSplit(false)<a name="line.366"></a>
+<span class="sourceLineNo">367</span>              .setRegionId(regionId)<a name="line.367"></a>
+<span class="sourceLineNo">368</span>              .setReplicaId(replicaId)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>              .build();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  /**<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * Gets the result in hbase:meta for the specified region.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * @param connection connection we're using<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param regionName region we're looking for<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @return result of the specified region<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   */<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  public static Result getRegionResult(Connection connection,<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      byte[] regionName) throws IOException {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    Get get = new Get(regionName);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return get(getMetaHTable(connection), get);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>  /**<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * Get regions from the merge qualifier of the specified merged region<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * @return null if it doesn't contain merge qualifier, else two merge regions<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  @Nullable<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  public static Pair&lt;RegionInfo, RegionInfo&gt; getRegionsFromMergeQualifier(<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      Connection connection, byte[] regionName) throws IOException {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    Result result = getRegionResult(connection, regionName);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    RegionInfo mergeA = getRegionInfo(result, HConstants.MERGEA_QUALIFIER);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    RegionInfo mergeB = getRegionInfo(result, HConstants.MERGEB_QUALIFIER);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    if (mergeA == null &amp;&amp; mergeB == null) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      return null;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    return new Pair&lt;&gt;(mergeA, mergeB);<a name="line.398"></a>
+<span class="sourceLineNo">399</span> }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>  /**<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   * Checks if the specified table exists.  Looks at the hbase:meta table hosted on<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   * the specified server.<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * @param connection connection we're using<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   * @param tableName table to check<a name="line.405"></a>
+<span class="sourceLineNo">406</span>   * @return true if the table exists in meta, false if not<a name="line.406"></a>
+<span class="sourceLineNo">407</span>   */<a name="line.407"></a>
+<span class="sourceLineNo">408</span>  public static boolean tableExists(Connection connection,<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      final TableName tableName)<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  throws IOException {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // Catalog tables always exist.<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    return tableName.equals(TableName.META_TABLE_NAME)<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        || getTableState(connection, tableName) != null;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  }<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>  /**<a name="line.416"></a>
+<span class="sourceLineNo">417</span>   * Lists all of the regions currently in META.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   *<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * @param connection to connect with<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   * @param excludeOfflinedSplitParents False if we are to include offlined/splitparents regions,<a name="line.420"></a>
+<span class="sourceLineNo">421</span>   *                                    true and we'll leave out offlined regions from returned list<a name="line.421"></a>
+<span class="sourceLineNo">422</span>   * @return List of all user-space regions.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>   */<a name="line.423"></a>
+<span class="sourceLineNo">424</span>  @VisibleForTesting<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  public static List&lt;RegionInfo&gt; getAllRegions(Connection connection,<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      boolean excludeOfflinedSplitParents)<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      throws IOException {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result;<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>    result = getTableRegionsAndLocations(connection, null,<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        excludeOfflinedSplitParents);<a name="line.431"></a>
 <span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>  }<a name="line.433"></a>
+<span class="sourceLineNo">433</span>    return getListOfRegionInfos(result);<a name="line.433"></a>
 <span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>  /**<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * Gets all of the regions of the specified table. Do not use this method<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * to get meta table regions, use methods in MetaTableLocator instead.<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * @param connection connection we're using<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   * @param tableName table we're looking for<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   * @return Ordered list of {@link RegionInfo}.<a name="line.440"></a>
-<span class="sourceLineNo">441</span>   */<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  public static List&lt;RegionInfo&gt; getTableRegions(Connection connection, TableName tableName)<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  throws IOException {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    return getTableRegions(connection, tableName, false);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>  /**<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * Gets all of the regions of the specified table. Do not use this method<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   * to get meta table regions, use methods in MetaTableLocator instead.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * @param connection connection we're using<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * @param tableName table we're looking for<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * @param excludeOfflinedSplitParents If true, do not include offlined split<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * parents in the return.<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * @return Ordered list of {@link RegionInfo}.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   */<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  public static List&lt;RegionInfo&gt; getTableRegions(Connection connection, TableName tableName,<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      final boolean excludeOfflinedSplitParents) throws IOException {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result =<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      getTableRegionsAndLocations(connection, tableName, excludeOfflinedSplitParents);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    return getListOfRegionInfos(result);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>  }<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>  private static List&lt;RegionInfo&gt; getListOfRegionInfos(<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      final List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; pairs) {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    if (pairs == null || pairs.isEmpty()) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      return Collections.emptyList();<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    List&lt;RegionInfo&gt; result = new ArrayList&lt;&gt;(pairs.size());<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    for (Pair&lt;RegionInfo, ServerName&gt; pair : pairs) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      result.add(pair.getFirst());<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return result;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * @param tableName table we're working with<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @return start row for scanning META according to query type<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  public static byte[] getTableStartRowForMeta(TableName tableName, QueryType type) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    if (tableName == null) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      return null;<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    }<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    switch (type) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    case REGION:<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      byte[] startRow = new byte[tableName.getName().length + 2];<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      System.arraycopy(tableName.getName(), 0, startRow, 0, tableName.getName().length);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      startRow[startRow.length - 2] = HConstants.DELIMITER;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      startRow[startRow.length - 1] = HConstants.DELIMITER;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      return startRow;<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    case ALL:<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    case TABLE:<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    default:<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      return tableName.getName();<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  }<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>  /**<a name="line.497"></a>
-<span class="sourceLineNo">498</span>   * @param tableName table we're working with<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * @return stop row for scanning META according to query type<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   */<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  public static byte[] getTableStopRowForMeta(TableName tableName, QueryType type) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    if (tableName == null) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      return null;<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    }<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    final byte[] stopRow;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    switch (type) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    case REGION:<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      stopRow = new byte[tableName.getName().length + 3];<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      System.arraycopy(tableName.getName(), 0, stopRow, 0, tableName.getName().length);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      stopRow[stopRow.length - 3] = ' ';<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      stopRow[stopRow.length - 2] = HConstants.DELIMITER;<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      stopRow[stopRow.length - 1] = HConstants.DELIMITER;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      break;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    case ALL:<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    case TABLE:<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    default:<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      stopRow = new byte[tableName.getName().length + 1];<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      System.arraycopy(tableName.getName(), 0, stopRow, 0, tableName.getName().length);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      stopRow[stopRow.length - 1] = ' ';<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      break;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    }<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    return stopRow;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>  /**<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * This method creates a Scan object that will only scan catalog rows that<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * belong to the specified table. It doesn't specify any columns.<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   * This is a better alternative to just using a start row and scan until<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * it hits a new table since that requires parsing the HRI to get the table<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * name.<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * @param tableName bytes of table's name<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * @return configured Scan object<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   */<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  @Deprecated<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  public static Scan getScanForTableName(Connection connection, TableName tableName) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    // Start key is just the table name with delimiters<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    byte[] startKey = getTableStartRowForMeta(tableName, QueryType.REGION);<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    // Stop key appends the smallest possible char to the table name<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    byte[] stopKey = getTableStopRowForMeta(tableName, QueryType.REGION);<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>    Scan scan = getMetaScan(connection, -1);<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    scan.setStartRow(startKey);<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    scan.setStopRow(stopKey);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    return scan;<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>  private static Scan getMetaScan(Connection connection, int rowUpperLimit) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    Scan scan = new Scan();<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    int scannerCaching = connection.getConfiguration()<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        .getInt(HConstants.HBASE_META_SCANNER_CACHING,<a name="line.550"></a>
-<span class="sourceLineNo">551</span>            HConstants.DEFAULT_HBASE_META_SCANNER_CACHING);<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    if (connection.getConfiguration().getBoolean(HConstants.USE_META_REPLICAS,<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        HConstants.DEFAULT_USE_META_REPLICAS)) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      scan.setConsistency(Consistency.TIMELINE);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    if (rowUpperLimit &gt; 0) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      scan.setLimit(rowUpperLimit);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      scan.setReadType(Scan.ReadType.PREAD);<a name="line.558"></a>
-<span class="sourceLineNo">559</span

<TRUNCATED>

[02/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.Monitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.Monitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.Monitor.html
index 799d58c..1b52048 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.Monitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.Monitor.html
@@ -573,7 +573,7 @@
 <span class="sourceLineNo">565</span>  private static final int ERROR_EXIT_CODE = 4;<a name="line.565"></a>
 <span class="sourceLineNo">566</span>  private static final int FAILURE_EXIT_CODE = 5;<a name="line.566"></a>
 <span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 6000;<a name="line.568"></a>
+<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 60000;<a name="line.568"></a>
 <span class="sourceLineNo">569</span><a name="line.569"></a>
 <span class="sourceLineNo">570</span>  private static final long DEFAULT_TIMEOUT = 600000; // 10 mins<a name="line.570"></a>
 <span class="sourceLineNo">571</span>  private static final int MAX_THREADS_NUM = 16; // #threads to contact regions<a name="line.571"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionMonitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionMonitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionMonitor.html
index 799d58c..1b52048 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionMonitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionMonitor.html
@@ -573,7 +573,7 @@
 <span class="sourceLineNo">565</span>  private static final int ERROR_EXIT_CODE = 4;<a name="line.565"></a>
 <span class="sourceLineNo">566</span>  private static final int FAILURE_EXIT_CODE = 5;<a name="line.566"></a>
 <span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 6000;<a name="line.568"></a>
+<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 60000;<a name="line.568"></a>
 <span class="sourceLineNo">569</span><a name="line.569"></a>
 <span class="sourceLineNo">570</span>  private static final long DEFAULT_TIMEOUT = 600000; // 10 mins<a name="line.570"></a>
 <span class="sourceLineNo">571</span>  private static final int MAX_THREADS_NUM = 16; // #threads to contact regions<a name="line.571"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionServerMonitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionServerMonitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionServerMonitor.html
index 799d58c..1b52048 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionServerMonitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionServerMonitor.html
@@ -573,7 +573,7 @@
 <span class="sourceLineNo">565</span>  private static final int ERROR_EXIT_CODE = 4;<a name="line.565"></a>
 <span class="sourceLineNo">566</span>  private static final int FAILURE_EXIT_CODE = 5;<a name="line.566"></a>
 <span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 6000;<a name="line.568"></a>
+<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 60000;<a name="line.568"></a>
 <span class="sourceLineNo">569</span><a name="line.569"></a>
 <span class="sourceLineNo">570</span>  private static final long DEFAULT_TIMEOUT = 600000; // 10 mins<a name="line.570"></a>
 <span class="sourceLineNo">571</span>  private static final int MAX_THREADS_NUM = 16; // #threads to contact regions<a name="line.571"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionServerStdOutSink.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionServerStdOutSink.html b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionServerStdOutSink.html
index 799d58c..1b52048 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionServerStdOutSink.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionServerStdOutSink.html
@@ -573,7 +573,7 @@
 <span class="sourceLineNo">565</span>  private static final int ERROR_EXIT_CODE = 4;<a name="line.565"></a>
 <span class="sourceLineNo">566</span>  private static final int FAILURE_EXIT_CODE = 5;<a name="line.566"></a>
 <span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 6000;<a name="line.568"></a>
+<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 60000;<a name="line.568"></a>
 <span class="sourceLineNo">569</span><a name="line.569"></a>
 <span class="sourceLineNo">570</span>  private static final long DEFAULT_TIMEOUT = 600000; // 10 mins<a name="line.570"></a>
 <span class="sourceLineNo">571</span>  private static final int MAX_THREADS_NUM = 16; // #threads to contact regions<a name="line.571"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionServerTask.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionServerTask.html b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionServerTask.html
index 799d58c..1b52048 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionServerTask.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionServerTask.html
@@ -573,7 +573,7 @@
 <span class="sourceLineNo">565</span>  private static final int ERROR_EXIT_CODE = 4;<a name="line.565"></a>
 <span class="sourceLineNo">566</span>  private static final int FAILURE_EXIT_CODE = 5;<a name="line.566"></a>
 <span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 6000;<a name="line.568"></a>
+<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 60000;<a name="line.568"></a>
 <span class="sourceLineNo">569</span><a name="line.569"></a>
 <span class="sourceLineNo">570</span>  private static final long DEFAULT_TIMEOUT = 600000; // 10 mins<a name="line.570"></a>
 <span class="sourceLineNo">571</span>  private static final int MAX_THREADS_NUM = 16; // #threads to contact regions<a name="line.571"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionStdOutSink.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionStdOutSink.html b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionStdOutSink.html
index 799d58c..1b52048 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionStdOutSink.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionStdOutSink.html
@@ -573,7 +573,7 @@
 <span class="sourceLineNo">565</span>  private static final int ERROR_EXIT_CODE = 4;<a name="line.565"></a>
 <span class="sourceLineNo">566</span>  private static final int FAILURE_EXIT_CODE = 5;<a name="line.566"></a>
 <span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 6000;<a name="line.568"></a>
+<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 60000;<a name="line.568"></a>
 <span class="sourceLineNo">569</span><a name="line.569"></a>
 <span class="sourceLineNo">570</span>  private static final long DEFAULT_TIMEOUT = 600000; // 10 mins<a name="line.570"></a>
 <span class="sourceLineNo">571</span>  private static final int MAX_THREADS_NUM = 16; // #threads to contact regions<a name="line.571"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionTask.TaskType.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionTask.TaskType.html b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionTask.TaskType.html
index 799d58c..1b52048 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionTask.TaskType.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionTask.TaskType.html
@@ -573,7 +573,7 @@
 <span class="sourceLineNo">565</span>  private static final int ERROR_EXIT_CODE = 4;<a name="line.565"></a>
 <span class="sourceLineNo">566</span>  private static final int FAILURE_EXIT_CODE = 5;<a name="line.566"></a>
 <span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 6000;<a name="line.568"></a>
+<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 60000;<a name="line.568"></a>
 <span class="sourceLineNo">569</span><a name="line.569"></a>
 <span class="sourceLineNo">570</span>  private static final long DEFAULT_TIMEOUT = 600000; // 10 mins<a name="line.570"></a>
 <span class="sourceLineNo">571</span>  private static final int MAX_THREADS_NUM = 16; // #threads to contact regions<a name="line.571"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionTask.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionTask.html b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionTask.html
index 799d58c..1b52048 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionTask.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.RegionTask.html
@@ -573,7 +573,7 @@
 <span class="sourceLineNo">565</span>  private static final int ERROR_EXIT_CODE = 4;<a name="line.565"></a>
 <span class="sourceLineNo">566</span>  private static final int FAILURE_EXIT_CODE = 5;<a name="line.566"></a>
 <span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 6000;<a name="line.568"></a>
+<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 60000;<a name="line.568"></a>
 <span class="sourceLineNo">569</span><a name="line.569"></a>
 <span class="sourceLineNo">570</span>  private static final long DEFAULT_TIMEOUT = 600000; // 10 mins<a name="line.570"></a>
 <span class="sourceLineNo">571</span>  private static final int MAX_THREADS_NUM = 16; // #threads to contact regions<a name="line.571"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.Sink.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.Sink.html b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.Sink.html
index 799d58c..1b52048 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.Sink.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.Sink.html
@@ -573,7 +573,7 @@
 <span class="sourceLineNo">565</span>  private static final int ERROR_EXIT_CODE = 4;<a name="line.565"></a>
 <span class="sourceLineNo">566</span>  private static final int FAILURE_EXIT_CODE = 5;<a name="line.566"></a>
 <span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 6000;<a name="line.568"></a>
+<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 60000;<a name="line.568"></a>
 <span class="sourceLineNo">569</span><a name="line.569"></a>
 <span class="sourceLineNo">570</span>  private static final long DEFAULT_TIMEOUT = 600000; // 10 mins<a name="line.570"></a>
 <span class="sourceLineNo">571</span>  private static final int MAX_THREADS_NUM = 16; // #threads to contact regions<a name="line.571"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.StdOutSink.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.StdOutSink.html b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.StdOutSink.html
index 799d58c..1b52048 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.StdOutSink.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.StdOutSink.html
@@ -573,7 +573,7 @@
 <span class="sourceLineNo">565</span>  private static final int ERROR_EXIT_CODE = 4;<a name="line.565"></a>
 <span class="sourceLineNo">566</span>  private static final int FAILURE_EXIT_CODE = 5;<a name="line.566"></a>
 <span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 6000;<a name="line.568"></a>
+<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 60000;<a name="line.568"></a>
 <span class="sourceLineNo">569</span><a name="line.569"></a>
 <span class="sourceLineNo">570</span>  private static final long DEFAULT_TIMEOUT = 600000; // 10 mins<a name="line.570"></a>
 <span class="sourceLineNo">571</span>  private static final int MAX_THREADS_NUM = 16; // #threads to contact regions<a name="line.571"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.ZookeeperMonitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.ZookeeperMonitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.ZookeeperMonitor.html
index 799d58c..1b52048 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.ZookeeperMonitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.ZookeeperMonitor.html
@@ -573,7 +573,7 @@
 <span class="sourceLineNo">565</span>  private static final int ERROR_EXIT_CODE = 4;<a name="line.565"></a>
 <span class="sourceLineNo">566</span>  private static final int FAILURE_EXIT_CODE = 5;<a name="line.566"></a>
 <span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 6000;<a name="line.568"></a>
+<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 60000;<a name="line.568"></a>
 <span class="sourceLineNo">569</span><a name="line.569"></a>
 <span class="sourceLineNo">570</span>  private static final long DEFAULT_TIMEOUT = 600000; // 10 mins<a name="line.570"></a>
 <span class="sourceLineNo">571</span>  private static final int MAX_THREADS_NUM = 16; // #threads to contact regions<a name="line.571"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.ZookeeperStdOutSink.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.ZookeeperStdOutSink.html b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.ZookeeperStdOutSink.html
index 799d58c..1b52048 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.ZookeeperStdOutSink.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.ZookeeperStdOutSink.html
@@ -573,7 +573,7 @@
 <span class="sourceLineNo">565</span>  private static final int ERROR_EXIT_CODE = 4;<a name="line.565"></a>
 <span class="sourceLineNo">566</span>  private static final int FAILURE_EXIT_CODE = 5;<a name="line.566"></a>
 <span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 6000;<a name="line.568"></a>
+<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 60000;<a name="line.568"></a>
 <span class="sourceLineNo">569</span><a name="line.569"></a>
 <span class="sourceLineNo">570</span>  private static final long DEFAULT_TIMEOUT = 600000; // 10 mins<a name="line.570"></a>
 <span class="sourceLineNo">571</span>  private static final int MAX_THREADS_NUM = 16; // #threads to contact regions<a name="line.571"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.ZookeeperTask.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.ZookeeperTask.html b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.ZookeeperTask.html
index 799d58c..1b52048 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.ZookeeperTask.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.ZookeeperTask.html
@@ -573,7 +573,7 @@
 <span class="sourceLineNo">565</span>  private static final int ERROR_EXIT_CODE = 4;<a name="line.565"></a>
 <span class="sourceLineNo">566</span>  private static final int FAILURE_EXIT_CODE = 5;<a name="line.566"></a>
 <span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 6000;<a name="line.568"></a>
+<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 60000;<a name="line.568"></a>
 <span class="sourceLineNo">569</span><a name="line.569"></a>
 <span class="sourceLineNo">570</span>  private static final long DEFAULT_TIMEOUT = 600000; // 10 mins<a name="line.570"></a>
 <span class="sourceLineNo">571</span>  private static final int MAX_THREADS_NUM = 16; // #threads to contact regions<a name="line.571"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.html b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.html
index 799d58c..1b52048 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tool/Canary.html
@@ -573,7 +573,7 @@
 <span class="sourceLineNo">565</span>  private static final int ERROR_EXIT_CODE = 4;<a name="line.565"></a>
 <span class="sourceLineNo">566</span>  private static final int FAILURE_EXIT_CODE = 5;<a name="line.566"></a>
 <span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 6000;<a name="line.568"></a>
+<span class="sourceLineNo">568</span>  private static final long DEFAULT_INTERVAL = 60000;<a name="line.568"></a>
 <span class="sourceLineNo">569</span><a name="line.569"></a>
 <span class="sourceLineNo">570</span>  private static final long DEFAULT_TIMEOUT = 600000; // 10 mins<a name="line.570"></a>
 <span class="sourceLineNo">571</span>  private static final int MAX_THREADS_NUM = 16; // #threads to contact regions<a name="line.571"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index b01e87c..f33e181 100644
--- a/export_control.html
+++ b/export_control.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -321,7 +321,7 @@ for more details.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index 89f3d8c..03243eb 100644
--- a/index.html
+++ b/index.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBaseâ„¢ Home</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -425,7 +425,7 @@ Apache HBase is an open-source, distributed, versioned, non-relational database
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index b9f978f..a0d2bfa 100644
--- a/integration.html
+++ b/integration.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -281,7 +281,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index d8e489c..0258e78 100644
--- a/issue-tracking.html
+++ b/issue-tracking.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -278,7 +278,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index 9c9787c..380db0e 100644
--- a/license.html
+++ b/license.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -481,7 +481,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index 74eb399..01512e2 100644
--- a/mail-lists.html
+++ b/mail-lists.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -331,7 +331,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index 2afa2ef..c55012a 100644
--- a/metrics.html
+++ b/metrics.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -449,7 +449,7 @@ export HBASE_REGIONSERVER_OPTS=&quot;$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index b534cda..57a7c0a 100644
--- a/old_news.html
+++ b/old_news.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -404,7 +404,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index 2498c28..2e3f00e 100644
--- a/plugin-management.html
+++ b/plugin-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -430,7 +430,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index a96bdc6..4fb64a5 100644
--- a/plugins.html
+++ b/plugins.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -365,7 +365,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index ed4e2bb..5db500d 100644
--- a/poweredbyhbase.html
+++ b/poweredbyhbase.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Powered By Apache HBase™</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -759,7 +759,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index 6df8fc1..f47dffe 100644
--- a/project-info.html
+++ b/project-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -325,7 +325,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index 3f85cc6..48fc8dd 100644
--- a/project-reports.html
+++ b/project-reports.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -295,7 +295,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index f738af5..fc3f4ba 100644
--- a/project-summary.html
+++ b/project-summary.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -321,7 +321,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 336ddd7..d684241 100644
--- a/pseudo-distributed.html
+++ b/pseudo-distributed.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -298,7 +298,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index 992cdb9..e056031 100644
--- a/replication.html
+++ b/replication.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -293,7 +293,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index b8bbbe6..967247f 100644
--- a/resources.html
+++ b/resources.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Other Apache HBase (TM) Resources</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -321,7 +321,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index 6257194..0c90cf4 100644
--- a/source-repository.html
+++ b/source-repository.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -289,7 +289,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index 76185fa..bc1a075 100644
--- a/sponsors.html
+++ b/sponsors.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase™ Sponsors</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -323,7 +323,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index 4708a2c..bcf313c 100644
--- a/supportingprojects.html
+++ b/supportingprojects.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Supporting Projects</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -510,7 +510,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index fb49b05..4c45f3a 100644
--- a/team-list.html
+++ b/team-list.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -720,7 +720,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-frame.html b/testdevapidocs/allclasses-frame.html
index 867028c..8e0c8d5 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -1770,6 +1770,7 @@
 <li><a href="org/apache/hadoop/hbase/rest/client/TestRemoteHTableRetries.CallExecutor.html" title="interface in org.apache.hadoop.hbase.rest.client" target="classFrame"><span class="interfaceName">TestRemoteHTableRetries.CallExecutor</span></a></li>
 <li><a href="org/apache/hadoop/hbase/backup/TestRemoteRestore.html" title="class in org.apache.hadoop.hbase.backup" target="classFrame">TestRemoteRestore</a></li>
 <li><a href="org/apache/hadoop/hbase/rest/client/TestRemoteTable.html" title="class in org.apache.hadoop.hbase.rest.client" target="classFrame">TestRemoteTable</a></li>
+<li><a href="org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication" target="classFrame">TestRemoveFromSerialReplicationPeer</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRemoveRegionMetrics</a></li>
 <li><a href="org/apache/hadoop/hbase/backup/TestRepairAfterFailedDelete.html" title="class in org.apache.hadoop.hbase.backup" target="classFrame">TestRepairAfterFailedDelete</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestReplicasClient.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestReplicasClient</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index 213f62d..6ae35f8 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -1770,6 +1770,7 @@
 <li><a href="org/apache/hadoop/hbase/rest/client/TestRemoteHTableRetries.CallExecutor.html" title="interface in org.apache.hadoop.hbase.rest.client"><span class="interfaceName">TestRemoteHTableRetries.CallExecutor</span></a></li>
 <li><a href="org/apache/hadoop/hbase/backup/TestRemoteRestore.html" title="class in org.apache.hadoop.hbase.backup">TestRemoteRestore</a></li>
 <li><a href="org/apache/hadoop/hbase/rest/client/TestRemoteTable.html" title="class in org.apache.hadoop.hbase.rest.client">TestRemoteTable</a></li>
+<li><a href="org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication">TestRemoveFromSerialReplicationPeer</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html" title="class in org.apache.hadoop.hbase.regionserver">TestRemoveRegionMetrics</a></li>
 <li><a href="org/apache/hadoop/hbase/backup/TestRepairAfterFailedDelete.html" title="class in org.apache.hadoop.hbase.backup">TestRepairAfterFailedDelete</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestReplicasClient.html" title="class in org.apache.hadoop.hbase.client">TestReplicasClient</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index ff9eaf8..b02ea17 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -5735,6 +5735,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestPerTableCFReplication.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestPerTableCFReplication.html" title="class in org.apache.hadoop.hbase.replication">TestPerTableCFReplication</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication">TestRemoveFromSerialReplicationPeer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestReplicationChangingPeerRegionservers.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestReplicationChangingPeerRegionservers.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationChangingPeerRegionservers</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestReplicationDisableInactivePeer.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestReplicationDisableInactivePeer.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationDisableInactivePeer</a></dt>
@@ -36086,6 +36088,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestMasterReplication.html#setUp--">setUp()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestMasterReplication.html" title="class in org.apache.hadoop.hbase.replication">TestMasterReplication</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html#setUp--">setUp()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication">TestRemoveFromSerialReplicationPeer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestReplicationChangingPeerRegionservers.html#setUp--">setUp()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestReplicationChangingPeerRegionservers.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationChangingPeerRegionservers</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestReplicationDroppedTables.html#setUp--">setUp()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestReplicationDroppedTables.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationDroppedTables</a></dt>
@@ -56884,6 +56888,12 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestCompactionArchiveIOException.html#testRemoveCompactedFilesWithException--">testRemoveCompactedFilesWithException()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestCompactionArchiveIOException.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactionArchiveIOException</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">TestRemoveFromSerialReplicationPeer</span></a> - Class in <a href="org/apache/hadoop/hbase/replication/package-summary.html">org.apache.hadoop.hbase.replication</a></dt>
+<dd>
+<div class="block">Testcase for HBASE-20296.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html#TestRemoveFromSerialReplicationPeer--">TestRemoveFromSerialReplicationPeer()</a></span> - Constructor for class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication">TestRemoveFromSerialReplicationPeer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/metrics/TestBaseSourceImpl.html#testRemoveMetric--">testRemoveMetric()</a></span> - Method in class org.apache.hadoop.hbase.metrics.<a href="org/apache/hadoop/hbase/metrics/TestBaseSourceImpl.html" title="class in org.apache.hadoop.hbase.metrics">TestBaseSourceImpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestSerialReplication.html#testRemovePeer--">testRemovePeer()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestSerialReplication.html" title="class in org.apache.hadoop.hbase.replication">TestSerialReplication</a></dt>
@@ -56910,6 +56920,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/cleaner/TestHFileCleaner.html#testRemovesEmptyDirectories--">testRemovesEmptyDirectories()</a></span> - Method in class org.apache.hadoop.hbase.master.cleaner.<a href="org/apache/hadoop/hbase/master/cleaner/TestHFileCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">TestHFileCleaner</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html#testRemoveSerialFlag--">testRemoveSerialFlag()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication">TestRemoveFromSerialReplicationPeer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestSerialReplication.html#testRemoveSerialFlag--">testRemoveSerialFlag()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestSerialReplication.html" title="class in org.apache.hadoop.hbase.replication">TestSerialReplication</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rsgroup/TestRSGroupsBase.html#testRemoveServers--">testRemoveServers()</a></span> - Method in class org.apache.hadoop.hbase.rsgroup.<a href="org/apache/hadoop/hbase/rsgroup/TestRSGroupsBase.html" title="class in org.apache.hadoop.hbase.rsgroup">TestRSGroupsBase</a></dt>
@@ -56925,6 +56937,8 @@
 <div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
 <div class="block">Test that we add and remove strings from settings properly.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html#testRemoveTable--">testRemoveTable()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication">TestRemoveFromSerialReplicationPeer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/constraint/TestConstraints.html#testRemoveUnsetConstraint--">testRemoveUnsetConstraint()</a></span> - Method in class org.apache.hadoop.hbase.constraint.<a href="org/apache/hadoop/hbase/constraint/TestConstraints.html" title="class in org.apache.hadoop.hbase.constraint">TestConstraints</a></dt>
 <dd>
 <div class="block">Test that if a constraint hasn't been set that there are no problems with
@@ -66553,6 +66567,8 @@ the order they are declared.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mob/compactions/TestMobCompactor.html#waitUntilFilesShowup-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-int-">waitUntilFilesShowup(FileSystem, Path, int)</a></span> - Method in class org.apache.hadoop.hbase.mob.compactions.<a href="org/apache/hadoop/hbase/mob/compactions/TestMobCompactor.html" title="class in org.apache.hadoop.hbase.mob.compactions">TestMobCompactor</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html#waitUntilHasLastPushedSequenceId-org.apache.hadoop.hbase.client.RegionInfo-">waitUntilHasLastPushedSequenceId(RegionInfo)</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html" title="class in org.apache.hadoop.hbase.replication">TestRemoveFromSerialReplicationPeer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestAsyncRegionAdminApi.html#waitUntilMobCompactionFinished-org.apache.hadoop.hbase.TableName-">waitUntilMobCompactionFinished(TableName)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestAsyncRegionAdminApi.html" title="class in org.apache.hadoop.hbase.client">TestAsyncRegionAdminApi</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mob/compactions/TestMobCompactor.html#waitUntilMobCompactionFinished-org.apache.hadoop.hbase.TableName-">waitUntilMobCompactionFinished(TableName)</a></span> - Method in class org.apache.hadoop.hbase.mob.compactions.<a href="org/apache/hadoop/hbase/mob/compactions/TestMobCompactor.html" title="class in org.apache.hadoop.hbase.mob.compactions">TestMobCompactor</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
index 7700425..5bd1dcc 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
@@ -5069,102 +5069,106 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReplicationDroppedTables.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationDroppedTables.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRemoveFromSerialReplicationPeer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAddToSerialReplicationPeer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestAddToSerialReplicationPeer.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReplicationDroppedTables.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationDroppedTables.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReplicationEndpoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationEndpoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAddToSerialReplicationPeer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestAddToSerialReplicationPeer.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReplicationSource.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationSource.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReplicationEndpoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationEndpoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReplicationEmptyWALRecovery.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationEmptyWALRecovery.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReplicationSource.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationSource.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestNamespaceReplication.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestNamespaceReplication.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReplicationEmptyWALRecovery.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationEmptyWALRecovery.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMultiSlaveReplication.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestMultiSlaveReplication.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestNamespaceReplication.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestNamespaceReplication.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReplicationKillSlaveRS.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationKillSlaveRS.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMultiSlaveReplication.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestMultiSlaveReplication.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReplicationProcedureRetry.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationProcedureRetry.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReplicationKillSlaveRS.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationKillSlaveRS.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSerialReplicationFailover.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestSerialReplicationFailover.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReplicationProcedureRetry.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationProcedureRetry.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReplicationTrackerZKImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationTrackerZKImpl.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSerialReplicationFailover.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestSerialReplicationFailover.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReplicationDisableInactivePeer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationDisableInactivePeer.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReplicationTrackerZKImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationTrackerZKImpl.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReplicationSmallTests.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReplicationDisableInactivePeer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationDisableInactivePeer.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReplicationWALEntryFilters.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationWALEntryFilters.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReplicationSmallTests.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestPerTableCFReplication.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestPerTableCFReplication.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReplicationWALEntryFilters.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationWALEntryFilters.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReplicationWithTags.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationWithTags.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestPerTableCFReplication.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestPerTableCFReplication.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReplicationSyncUpTool.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationSyncUpTool.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReplicationWithTags.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationWithTags.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSerialReplication.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestSerialReplication.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReplicationSyncUpTool.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationSyncUpTool.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReplicationKillRS.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationKillRS.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSerialReplication.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestSerialReplication.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMasterReplication.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestMasterReplication.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReplicationKillRS.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationKillRS.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReplicationStatus.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationStatus.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMasterReplication.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestMasterReplication.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReplicationKillMasterRSCompressed.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationKillMasterRSCompressed.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReplicationStatus.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationStatus.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReplicationChangingPeerRegionservers.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationChangingPeerRegionservers.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReplicationKillMasterRSCompressed.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationKillMasterRSCompressed.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestVerifyReplication.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestVerifyReplication.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReplicationChangingPeerRegionservers.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationChangingPeerRegionservers.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestVerifyReplication.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestVerifyReplication.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestReplicationSyncUpToolWithBulkLoadedData.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationSyncUpToolWithBulkLoadedData.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 </tbody>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
----------------------------------------------------------------------
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 ec56445..4837d80 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -158,8 +158,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
index 12f229d..f1b8f11 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -568,15 +568,15 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<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/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/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/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/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/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/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/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/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/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/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/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/HBaseClusterManager.CommandProvider.Operation.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseClusterManager.CommandProvider.Operation</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/procedure/package-tree.html
index 28973e0..a1c9b1d 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.procedure2.Procedure&lt;TEnvironment&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;)
+<li type="circle">org.apache.hadoop.hbase.procedure.Procedure (implements java.util.concurrent.<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a>&lt;V&gt;, org.apache.hadoop.hbase.errorhandling.ForeignExceptionListener)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure.<a href="../../../../../org/apache/hadoop/hbase/procedure/TestProcedureDescriber.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">TestProcedureDescriber.TestProcedure</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure.<a href="../../../../../org/apache/hadoop/hbase/procedure/TestProcedure.LatchedProcedure.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">TestProcedure.LatchedProcedure</span></a></li>
 </ul>
 </li>
-<li type="circle">org.apache.hadoop.hbase.procedure.Procedure (implements java.util.concurrent.<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a>&lt;V&gt;, org.apache.hadoop.hbase.errorhandling.ForeignExceptionListener)
+<li type="circle">org.apache.hadoop.hbase.procedure2.Procedure&lt;TEnvironment&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure.<a href="../../../../../org/apache/hadoop/hbase/procedure/TestProcedure.LatchedProcedure.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">TestProcedure.LatchedProcedure</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure.<a href="../../../../../org/apache/hadoop/hbase/procedure/TestProcedureDescriber.TestProcedure.html" title="class in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">TestProcedureDescriber.TestProcedure</span></a></li>
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.procedure.ProcedureManager

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
index b72e392..e9c1d93 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -205,9 +205,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureRecovery.TestStateMachineProcedure.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestStateMachineProcedure.TestSMProcedureState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestStateMachineProcedure.TestSMProcedureState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/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/TestProcedureRecovery.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureRecovery.TestStateMachineProcedure.State</span></a></li>
 </ul>
 </li>
 </ul>


[13/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CollectAllVisitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CollectAllVisitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CollectAllVisitor.html
index 6007f27..4ce6735 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CollectAllVisitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CollectAllVisitor.html
@@ -65,716 +65,716 @@
 <span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Table;<a name="line.57"></a>
 <span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.58"></a>
 <span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsResponse;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.slf4j.Logger;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.slf4j.LoggerFactory;<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.79"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsResponse;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.slf4j.Logger;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.slf4j.LoggerFactory;<a name="line.79"></a>
 <span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>/**<a name="line.81"></a>
-<span class="sourceLineNo">082</span> * &lt;p&gt;<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * Read/write operations on region and assignment information store in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * &lt;/p&gt;<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * &lt;p&gt;<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * Some of the methods of this class take ZooKeeperWatcher as a param. The only reason for this is<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * because when used on client-side (like from HBaseAdmin), we want to use short-living connection<a name="line.87"></a>
-<span class="sourceLineNo">088</span> * (opened before each operation, closed right after), while when used on HM or HRS (like in<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * AssignmentManager) we want permanent connection.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * &lt;/p&gt;<a name="line.90"></a>
-<span class="sourceLineNo">091</span> * &lt;p&gt;<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * HBASE-10070 adds a replicaId to HRI, meaning more than one HRI can be defined for the same table<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * range (table, startKey, endKey). For every range, there will be at least one HRI defined which is<a name="line.93"></a>
-<span class="sourceLineNo">094</span> * called default replica.<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * &lt;/p&gt;<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * &lt;p&gt;<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * Meta layout (as of 0.98 + HBASE-10070) is like:<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * &lt;pre&gt;<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * For each table there is single row in column family 'table' formatted:<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * &amp;lt;tableName&amp;gt; including namespace and columns are:<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * table: state             =&gt; contains table state<a name="line.102"></a>
-<span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * For each table range, there is a single row, formatted like:<a name="line.104"></a>
-<span class="sourceLineNo">105</span> * &amp;lt;tableName&amp;gt;,&amp;lt;startKey&amp;gt;,&amp;lt;regionId&amp;gt;,&amp;lt;encodedRegionName&amp;gt;.<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * This row corresponds to the regionName of the default region replica.<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Columns are:<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * info:regioninfo         =&gt; contains serialized HRI for the default region replica<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * info:server             =&gt; contains hostname:port (in string form) for the server hosting<a name="line.109"></a>
-<span class="sourceLineNo">110</span> *                            the default regionInfo replica<a name="line.110"></a>
-<span class="sourceLineNo">111</span> * info:server_&amp;lt;replicaId&amp;gt =&gt; contains hostname:port (in string form) for the server hosting<a name="line.111"></a>
-<span class="sourceLineNo">112</span> *                                 the regionInfo replica with replicaId<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * info:serverstartcode    =&gt; contains server start code (in binary long form) for the server<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *                            hosting the default regionInfo replica<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * info:serverstartcode_&amp;lt;replicaId&amp;gt =&gt; contains server start code (in binary long form) for<a name="line.115"></a>
-<span class="sourceLineNo">116</span> *                                          the server hosting the regionInfo replica with<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *                                          replicaId<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * info:seqnumDuringOpen   =&gt; contains seqNum (in binary long form) for the region at the time<a name="line.118"></a>
-<span class="sourceLineNo">119</span> *                             the server opened the region with default replicaId<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * info:seqnumDuringOpen_&amp;lt;replicaId&amp;gt =&gt; contains seqNum (in binary long form) for the region<a name="line.120"></a>
-<span class="sourceLineNo">121</span> *                                           at the time the server opened the region with<a name="line.121"></a>
-<span class="sourceLineNo">122</span> *                                           replicaId<a name="line.122"></a>
-<span class="sourceLineNo">123</span> * info:splitA             =&gt; contains a serialized HRI for the first daughter region if the<a name="line.123"></a>
-<span class="sourceLineNo">124</span> *                             region is split<a name="line.124"></a>
-<span class="sourceLineNo">125</span> * info:splitB             =&gt; contains a serialized HRI for the second daughter region if the<a name="line.125"></a>
+<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>/**<a name="line.83"></a>
+<span class="sourceLineNo">084</span> * &lt;p&gt;<a name="line.84"></a>
+<span class="sourceLineNo">085</span> * Read/write operations on region and assignment information store in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * &lt;/p&gt;<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * &lt;p&gt;<a name="line.87"></a>
+<span class="sourceLineNo">088</span> * Some of the methods of this class take ZooKeeperWatcher as a param. The only reason for this is<a name="line.88"></a>
+<span class="sourceLineNo">089</span> * because when used on client-side (like from HBaseAdmin), we want to use short-living connection<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * (opened before each operation, closed right after), while when used on HM or HRS (like in<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * AssignmentManager) we want permanent connection.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * &lt;/p&gt;<a name="line.92"></a>
+<span class="sourceLineNo">093</span> * &lt;p&gt;<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * HBASE-10070 adds a replicaId to HRI, meaning more than one HRI can be defined for the same table<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * range (table, startKey, endKey). For every range, there will be at least one HRI defined which is<a name="line.95"></a>
+<span class="sourceLineNo">096</span> * called default replica.<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * &lt;/p&gt;<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * &lt;p&gt;<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * Meta layout (as of 0.98 + HBASE-10070) is like:<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * &lt;pre&gt;<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * For each table there is single row in column family 'table' formatted:<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * &amp;lt;tableName&amp;gt; including namespace and columns are:<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * table: state             =&gt; contains table state<a name="line.104"></a>
+<span class="sourceLineNo">105</span> *<a name="line.105"></a>
+<span class="sourceLineNo">106</span> * For each table range, there is a single row, formatted like:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * &amp;lt;tableName&amp;gt;,&amp;lt;startKey&amp;gt;,&amp;lt;regionId&amp;gt;,&amp;lt;encodedRegionName&amp;gt;.<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * This row corresponds to the regionName of the default region replica.<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * Columns are:<a name="line.109"></a>
+<span class="sourceLineNo">110</span> * info:regioninfo         =&gt; contains serialized HRI for the default region replica<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * info:server             =&gt; contains hostname:port (in string form) for the server hosting<a name="line.111"></a>
+<span class="sourceLineNo">112</span> *                            the default regionInfo replica<a name="line.112"></a>
+<span class="sourceLineNo">113</span> * info:server_&amp;lt;replicaId&amp;gt =&gt; contains hostname:port (in string form) for the server hosting<a name="line.113"></a>
+<span class="sourceLineNo">114</span> *                                 the regionInfo replica with replicaId<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * info:serverstartcode    =&gt; contains server start code (in binary long form) for the server<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *                            hosting the default regionInfo replica<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * info:serverstartcode_&amp;lt;replicaId&amp;gt =&gt; contains server start code (in binary long form) for<a name="line.117"></a>
+<span class="sourceLineNo">118</span> *                                          the server hosting the regionInfo replica with<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *                                          replicaId<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * info:seqnumDuringOpen   =&gt; contains seqNum (in binary long form) for the region at the time<a name="line.120"></a>
+<span class="sourceLineNo">121</span> *                             the server opened the region with default replicaId<a name="line.121"></a>
+<span class="sourceLineNo">122</span> * info:seqnumDuringOpen_&amp;lt;replicaId&amp;gt =&gt; contains seqNum (in binary long form) for the region<a name="line.122"></a>
+<span class="sourceLineNo">123</span> *                                           at the time the server opened the region with<a name="line.123"></a>
+<span class="sourceLineNo">124</span> *                                           replicaId<a name="line.124"></a>
+<span class="sourceLineNo">125</span> * info:splitA             =&gt; contains a serialized HRI for the first daughter region if the<a name="line.125"></a>
 <span class="sourceLineNo">126</span> *                             region is split<a name="line.126"></a>
-<span class="sourceLineNo">127</span> * info:mergeA             =&gt; contains a serialized HRI for the first parent region if the<a name="line.127"></a>
-<span class="sourceLineNo">128</span> *                             region is the result of a merge<a name="line.128"></a>
-<span class="sourceLineNo">129</span> * info:mergeB             =&gt; contains a serialized HRI for the second parent region if the<a name="line.129"></a>
+<span class="sourceLineNo">127</span> * info:splitB             =&gt; contains a serialized HRI for the second daughter region if the<a name="line.127"></a>
+<span class="sourceLineNo">128</span> *                             region is split<a name="line.128"></a>
+<span class="sourceLineNo">129</span> * info:mergeA             =&gt; contains a serialized HRI for the first parent region if the<a name="line.129"></a>
 <span class="sourceLineNo">130</span> *                             region is the result of a merge<a name="line.130"></a>
-<span class="sourceLineNo">131</span> * &lt;/pre&gt;<a name="line.131"></a>
-<span class="sourceLineNo">132</span> * &lt;/p&gt;<a name="line.132"></a>
-<span class="sourceLineNo">133</span> * &lt;p&gt;<a name="line.133"></a>
-<span class="sourceLineNo">134</span> * The actual layout of meta should be encapsulated inside MetaTableAccessor methods, and should not<a name="line.134"></a>
-<span class="sourceLineNo">135</span> * leak out of it (through Result objects, etc)<a name="line.135"></a>
-<span class="sourceLineNo">136</span> * &lt;/p&gt;<a name="line.136"></a>
-<span class="sourceLineNo">137</span> */<a name="line.137"></a>
-<span class="sourceLineNo">138</span>@InterfaceAudience.Private<a name="line.138"></a>
-<span class="sourceLineNo">139</span>public class MetaTableAccessor {<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static final Logger LOG = LoggerFactory.getLogger(MetaTableAccessor.class);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static final Logger METALOG = LoggerFactory.getLogger("org.apache.hadoop.hbase.META");<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static final byte[] META_REGION_PREFIX;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  static {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    // Copy the prefix from FIRST_META_REGIONINFO into META_REGION_PREFIX.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    // FIRST_META_REGIONINFO == 'hbase:meta,,1'.  META_REGION_PREFIX == 'hbase:meta,'<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    int len = RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName().length - 2;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    META_REGION_PREFIX = new byte [len];<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    System.arraycopy(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName(), 0,<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      META_REGION_PREFIX, 0, len);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>  @VisibleForTesting<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  public static final byte[] REPLICATION_PARENT_QUALIFIER = Bytes.toBytes("parent");<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  private static final byte ESCAPE_BYTE = (byte) 0xFF;<a name="line.157"></a>
+<span class="sourceLineNo">131</span> * info:mergeB             =&gt; contains a serialized HRI for the second parent region if the<a name="line.131"></a>
+<span class="sourceLineNo">132</span> *                             region is the result of a merge<a name="line.132"></a>
+<span class="sourceLineNo">133</span> * &lt;/pre&gt;<a name="line.133"></a>
+<span class="sourceLineNo">134</span> * &lt;/p&gt;<a name="line.134"></a>
+<span class="sourceLineNo">135</span> * &lt;p&gt;<a name="line.135"></a>
+<span class="sourceLineNo">136</span> * The actual layout of meta should be encapsulated inside MetaTableAccessor methods, and should not<a name="line.136"></a>
+<span class="sourceLineNo">137</span> * leak out of it (through Result objects, etc)<a name="line.137"></a>
+<span class="sourceLineNo">138</span> * &lt;/p&gt;<a name="line.138"></a>
+<span class="sourceLineNo">139</span> */<a name="line.139"></a>
+<span class="sourceLineNo">140</span>@InterfaceAudience.Private<a name="line.140"></a>
+<span class="sourceLineNo">141</span>public class MetaTableAccessor {<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static final Logger LOG = LoggerFactory.getLogger(MetaTableAccessor.class);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static final Logger METALOG = LoggerFactory.getLogger("org.apache.hadoop.hbase.META");<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static final byte[] META_REGION_PREFIX;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  static {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    // Copy the prefix from FIRST_META_REGIONINFO into META_REGION_PREFIX.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    // FIRST_META_REGIONINFO == 'hbase:meta,,1'.  META_REGION_PREFIX == 'hbase:meta,'<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    int len = RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName().length - 2;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    META_REGION_PREFIX = new byte [len];<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    System.arraycopy(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName(), 0,<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      META_REGION_PREFIX, 0, len);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  }<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span>  @VisibleForTesting<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  public static final byte[] REPLICATION_PARENT_QUALIFIER = Bytes.toBytes("parent");<a name="line.157"></a>
 <span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  private static final byte SEPARATED_BYTE = 0x00;<a name="line.159"></a>
+<span class="sourceLineNo">159</span>  private static final byte ESCAPE_BYTE = (byte) 0xFF;<a name="line.159"></a>
 <span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  /**<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * Lists all of the table regions currently in META.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * Deprecated, keep there until some test use this.<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * @param connection what we will use<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * @param tableName table to list<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @return Map of all user-space regions to servers<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * @deprecated use {@link #getTableRegionsAndLocations}, region can have multiple locations<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   */<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  @Deprecated<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  public static NavigableMap&lt;RegionInfo, ServerName&gt; allTableRegions(<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      Connection connection, final TableName tableName) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    final NavigableMap&lt;RegionInfo, ServerName&gt; regions = new TreeMap&lt;&gt;();<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    Visitor visitor = new TableVisitorBase(tableName) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      public boolean visitInternal(Result result) throws IOException {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        RegionLocations locations = getRegionLocations(result);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>        if (locations == null) return true;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        for (HRegionLocation loc : locations.getRegionLocations()) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          if (loc != null) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>            RegionInfo regionInfo = loc.getRegionInfo();<a name="line.180"></a>
-<span class="sourceLineNo">181</span>            regions.put(regionInfo, loc.getServerName());<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>        return true;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    };<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    scanMetaForTableRegions(connection, visitor, tableName);<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    return regions;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>  @InterfaceAudience.Private<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  public enum QueryType {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    ALL(HConstants.TABLE_FAMILY, HConstants.CATALOG_FAMILY),<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    REGION(HConstants.CATALOG_FAMILY),<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    TABLE(HConstants.TABLE_FAMILY),<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    REPLICATION(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>    private final byte[][] families;<a name="line.198"></a>
+<span class="sourceLineNo">161</span>  private static final byte SEPARATED_BYTE = 0x00;<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  /**<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   * Lists all of the table regions currently in META.<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * Deprecated, keep there until some test use this.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * @param connection what we will use<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * @param tableName table to list<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * @return Map of all user-space regions to servers<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * @deprecated use {@link #getTableRegionsAndLocations}, region can have multiple locations<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  @Deprecated<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public static NavigableMap&lt;RegionInfo, ServerName&gt; allTableRegions(<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      Connection connection, final TableName tableName) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    final NavigableMap&lt;RegionInfo, ServerName&gt; regions = new TreeMap&lt;&gt;();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    Visitor visitor = new TableVisitorBase(tableName) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      @Override<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      public boolean visitInternal(Result result) throws IOException {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        RegionLocations locations = getRegionLocations(result);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        if (locations == null) return true;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        for (HRegionLocation loc : locations.getRegionLocations()) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          if (loc != null) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            RegionInfo regionInfo = loc.getRegionInfo();<a name="line.182"></a>
+<span class="sourceLineNo">183</span>            regions.put(regionInfo, loc.getServerName());<a name="line.183"></a>
+<span class="sourceLineNo">184</span>          }<a name="line.184"></a>
+<span class="sourceLineNo">185</span>        }<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        return true;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    };<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    scanMetaForTableRegions(connection, visitor, tableName);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    return regions;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  @InterfaceAudience.Private<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  public enum QueryType {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    ALL(HConstants.TABLE_FAMILY, HConstants.CATALOG_FAMILY),<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    REGION(HConstants.CATALOG_FAMILY),<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    TABLE(HConstants.TABLE_FAMILY),<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    REPLICATION(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.198"></a>
 <span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>    QueryType(byte[]... families) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      this.families = families;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span>    byte[][] getFamilies() {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return this.families;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private static final Pattern SERVER_COLUMN_PATTERN<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    = Pattern.compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  ////////////////////////<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  // Reading operations //<a name="line.217"></a>
+<span class="sourceLineNo">200</span>    private final byte[][] families;<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    QueryType(byte[]... families) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      this.families = families;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>    byte[][] getFamilies() {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      return this.families;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    }<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  private static final Pattern SERVER_COLUMN_PATTERN<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    = Pattern.compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
 <span class="sourceLineNo">218</span>  ////////////////////////<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>  /**<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   * @param connection connection we're using<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * @param visitor Visitor invoked against each row in regions family.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  public static void fullScanRegions(Connection connection,<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      final Visitor visitor)<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      throws IOException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    scanMeta(connection, null, null, QueryType.REGION, visitor);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  /**<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   * @param connection connection we're using<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public static List&lt;Result&gt; fullScanRegions(Connection connection)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      throws IOException {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    return fullScan(connection, QueryType.REGION);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  /**<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for tables.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   * @param connection connection we're using<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * @param visitor Visitor invoked against each row in tables family.<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  public static void fullScanTables(Connection connection,<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      final Visitor visitor)<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      throws IOException {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    scanMeta(connection, null, null, QueryType.TABLE, visitor);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>  /**<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   * @param connection connection we're using<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   * @param type scanned part of meta<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * @return List of {@link Result}<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  public static List&lt;Result&gt; fullScan(Connection connection, QueryType type)<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    throws IOException {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    CollectAllVisitor v = new CollectAllVisitor();<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    scanMeta(connection, null, null, type, v);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return v.getResults();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>  /**<a name="line.264"></a>
-<span class="sourceLineNo">265</span>   * Callers should call close on the returned {@link Table} instance.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>   * @param connection connection we're using to access Meta<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   * @return An {@link Table} for &lt;code&gt;hbase:meta&lt;/code&gt;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   */<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  public static Table getMetaHTable(final Connection connection)<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  throws IOException {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // We used to pass whole CatalogTracker in here, now we just pass in Connection<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    if (connection == null) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      throw new NullPointerException("No connection");<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    } else if (connection.isClosed()) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      throw new IOException("connection is closed");<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return connection.getTable(TableName.META_TABLE_NAME);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>  /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * @param t Table to use (will be closed when done).<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   * @param g Get to run<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   */<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  private static Result get(final Table t, final Get g) throws IOException {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    if (t == null) return null;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    try {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      return t.get(g);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    } finally {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      t.close();<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    }<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  /**<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * Gets the region info and assignment for the specified region.<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @param connection connection we're using<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * @param regionName Region to lookup.<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   * @return Location and RegionInfo for &lt;code&gt;regionName&lt;/code&gt;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>   * @deprecated use {@link #getRegionLocation(Connection, byte[])} instead<a name="line.298"></a>
-<span class="sourceLineNo">299</span>   */<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  @Deprecated<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  public static Pair&lt;RegionInfo, ServerName&gt; getRegion(Connection connection, byte [] regionName)<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    throws IOException {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    HRegionLocation location = getRegionLocation(connection, regionName);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    return location == null<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      ? null<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      : new Pair&lt;&gt;(location.getRegionInfo(), location.getServerName());<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  /**<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * Returns the HRegionLocation from meta for the given region<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * @param connection connection we're using<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * @param regionName region we're looking for<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * @return HRegionLocation for the given region<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public static HRegionLocation getRegionLocation(Connection connection, byte[] regionName)<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      throws IOException {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    byte[] row = regionName;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    RegionInfo parsedInfo = null;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    try {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      parsedInfo = parseRegionInfoFromRegionName(regionName);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      row = getMetaKeyForRegion(parsedInfo);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    } catch (Exception parseEx) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      // Ignore. This is used with tableName passed as regionName.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    Get get = new Get(row);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    Result r = get(getMetaHTable(connection), get);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    RegionLocations locations = getRegionLocations(r);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    return locations == null ? null<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      : locations.getRegionLocation(parsedInfo == null ? 0 : parsedInfo.getReplicaId());<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  /**<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * Returns the HRegionLocation from meta for the given region<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * @param connection connection we're using<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   * @param regionInfo region information<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * @return HRegionLocation for the given region<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   */<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static HRegionLocation getRegionLocation(Connection connection, RegionInfo regionInfo)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      throws IOException {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    byte[] row = getMetaKeyForRegion(regionInfo);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    Get get = new Get(row);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    Result r = get(getMetaHTable(connection), get);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    return getRegionLocation(r, regionInfo, regionInfo.getReplicaId());<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>  /** Returns the row key to use for this regionInfo */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public static byte[] getMetaKeyForRegion(RegionInfo regionInfo) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    return RegionReplicaUtil.getRegionInfoForDefaultReplica(regionInfo).getRegionName();<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /** Returns an HRI parsed from this regionName. Not all the fields of the HRI<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * is stored in the name, so the returned object should only be used for the fields<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * in the regionName.<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  public static RegionInfo parseRegionInfoFromRegionName(byte[] regionName) throws IOException {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    byte[][] fields = RegionInfo.parseRegionName(regionName);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    long regionId = Long.parseLong(Bytes.toString(fields[2]));<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    int replicaId = fields.length &gt; 3 ? Integer.parseInt(Bytes.toString(fields[3]), 16) : 0;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    return RegionInfoBuilder.newBuilder(TableName.valueOf(fields[0]))<a name="line.361"></a>
-<span class="sourceLineNo">362</span>              .setStartKey(fields[1])<a name="line.362"></a>
-<span class="sourceLineNo">363</span>              .setEndKey(fields[2])<a name="line.363"></a>
-<span class="sourceLineNo">364</span>              .setSplit(false)<a name="line.364"></a>
-<span class="sourceLineNo">365</span>              .setRegionId(regionId)<a name="line.365"></a>
-<span class="sourceLineNo">366</span>              .setReplicaId(replicaId)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>              .build();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * Gets the result in hbase:meta for the specified region.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * @param connection connection we're using<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * @param regionName region we're looking for<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * @return result of the specified region<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   */<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  public static Result getRegionResult(Connection connection,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      byte[] regionName) throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    Get get = new Get(regionName);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    return get(getMetaHTable(connection), get);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span>  /**<a name="line.383"></a>
-<span class="sourceLineNo">384</span>   * Get regions from the merge qualifier of the specified merged region<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * @return null if it doesn't contain merge qualifier, else two merge regions<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   */<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Nullable<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public static Pair&lt;RegionInfo, RegionInfo&gt; getRegionsFromMergeQualifier(<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      Connection connection, byte[] regionName) throws IOException {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    Result result = getRegionResult(connection, regionName);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    RegionInfo mergeA = getRegionInfo(result, HConstants.MERGEA_QUALIFIER);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    RegionInfo mergeB = getRegionInfo(result, HConstants.MERGEB_QUALIFIER);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    if (mergeA == null &amp;&amp; mergeB == null) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      return null;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    return new Pair&lt;&gt;(mergeA, mergeB);<a name="line.396"></a>
-<span class="sourceLineNo">397</span> }<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  /**<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * Checks if the specified table exists.  Looks at the hbase:meta table hosted on<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * the specified server.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param connection connection we're using<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param tableName table to check<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @return true if the table exists in meta, false if not<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  public static boolean tableExists(Connection connection,<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      final TableName tableName)<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  throws IOException {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    // Catalog tables always exist.<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return tableName.equals(TableName.META_TABLE_NAME)<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        || getTableState(connection, tableName) != null;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  /**<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * Lists all of the regions currently in META.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   *<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param connection to connect with<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param excludeOfflinedSplitParents False if we are to include offlined/splitparents regions,<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   *                                    true and we'll leave out offlined regions from returned list<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * @return List of all user-space regions.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   */<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  @VisibleForTesting<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  public static List&lt;RegionInfo&gt; getAllRegions(Connection connection,<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      boolean excludeOfflinedSplitParents)<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      throws IOException {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result;<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>    result = getTableRegionsAndLocations(connection, null,<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        excludeOfflinedSplitParents);<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>    return getListOfRegionInfos(result);<a name="line.431"></a>
+<span class="sourceLineNo">219</span>  // Reading operations //<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  ////////////////////////<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>  /**<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * @param connection connection we're using<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * @param visitor Visitor invoked against each row in regions family.<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   */<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public static void fullScanRegions(Connection connection,<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      final Visitor visitor)<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      throws IOException {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    scanMeta(connection, null, null, QueryType.REGION, visitor);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>  }<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>  /**<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @param connection connection we're using<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  public static List&lt;Result&gt; fullScanRegions(Connection connection)<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      throws IOException {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return fullScan(connection, QueryType.REGION);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  /**<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for tables.<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * @param connection connection we're using<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * @param visitor Visitor invoked against each row in tables family.<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   */<a name="line.246"></a>
+<span class="sourceLineNo">247</span>  public static void fullScanTables(Connection connection,<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      final Visitor visitor)<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    scanMeta(connection, null, null, QueryType.TABLE, visitor);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  }<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>  /**<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * @param connection connection we're using<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   * @param type scanned part of meta<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   * @return List of {@link Result}<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  public static List&lt;Result&gt; fullScan(Connection connection, QueryType type)<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    throws IOException {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    CollectAllVisitor v = new CollectAllVisitor();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    scanMeta(connection, null, null, type, v);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    return v.getResults();<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  }<a name="line.264"></a>
+<span class="sourceLineNo">265</span><a name="line.265"></a>
+<span class="sourceLineNo">266</span>  /**<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   * Callers should call close on the returned {@link Table} instance.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   * @param connection connection we're using to access Meta<a name="line.268"></a>
+<span class="sourceLineNo">269</span>   * @return An {@link Table} for &lt;code&gt;hbase:meta&lt;/code&gt;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>   */<a name="line.270"></a>
+<span class="sourceLineNo">271</span>  public static Table getMetaHTable(final Connection connection)<a name="line.271"></a>
+<span class="sourceLineNo">272</span>  throws IOException {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // We used to pass whole CatalogTracker in here, now we just pass in Connection<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    if (connection == null) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      throw new NullPointerException("No connection");<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    } else if (connection.isClosed()) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      throw new IOException("connection is closed");<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    return connection.getTable(TableName.META_TABLE_NAME);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>  /**<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * @param t Table to use (will be closed when done).<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   * @param g Get to run<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   */<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  private static Result get(final Table t, final Get g) throws IOException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    if (t == null) return null;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    try {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      return t.get(g);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    } finally {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      t.close();<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>  /**<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   * Gets the region info and assignment for the specified region.<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   * @param connection connection we're using<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * @param regionName Region to lookup.<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   * @return Location and RegionInfo for &lt;code&gt;regionName&lt;/code&gt;<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   * @deprecated use {@link #getRegionLocation(Connection, byte[])} instead<a name="line.300"></a>
+<span class="sourceLineNo">301</span>   */<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  @Deprecated<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  public static Pair&lt;RegionInfo, ServerName&gt; getRegion(Connection connection, byte [] regionName)<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    throws IOException {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    HRegionLocation location = getRegionLocation(connection, regionName);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    return location == null<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      ? null<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      : new Pair&lt;&gt;(location.getRegionInfo(), location.getServerName());<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>  /**<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   * Returns the HRegionLocation from meta for the given region<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * @param connection connection we're using<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   * @param regionName region we're looking for<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * @return HRegionLocation for the given region<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   */<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public static HRegionLocation getRegionLocation(Connection connection, byte[] regionName)<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      throws IOException {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    byte[] row = regionName;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    RegionInfo parsedInfo = null;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    try {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      parsedInfo = parseRegionInfoFromRegionName(regionName);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      row = getMetaKeyForRegion(parsedInfo);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    } catch (Exception parseEx) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      // Ignore. This is used with tableName passed as regionName.<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    Get get = new Get(row);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    Result r = get(getMetaHTable(connection), get);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    RegionLocations locations = getRegionLocations(r);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    return locations == null ? null<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      : locations.getRegionLocation(parsedInfo == null ? 0 : parsedInfo.getReplicaId());<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>  /**<a name="line.335"></a>
+<span class="sourceLineNo">336</span>   * Returns the HRegionLocation from meta for the given region<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * @param connection connection we're using<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * @param regionInfo region information<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * @return HRegionLocation for the given region<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   */<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  public static HRegionLocation getRegionLocation(Connection connection, RegionInfo regionInfo)<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      throws IOException {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    byte[] row = getMetaKeyForRegion(regionInfo);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    Get get = new Get(row);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    Result r = get(getMetaHTable(connection), get);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    return getRegionLocation(r, regionInfo, regionInfo.getReplicaId());<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  /** Returns the row key to use for this regionInfo */<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  public static byte[] getMetaKeyForRegion(RegionInfo regionInfo) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    return RegionReplicaUtil.getRegionInfoForDefaultReplica(regionInfo).getRegionName();<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  /** Returns an HRI parsed from this regionName. Not all the fields of the HRI<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * is stored in the name, so the returned object should only be used for the fields<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * in the regionName.<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   */<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  public static RegionInfo parseRegionInfoFromRegionName(byte[] regionName) throws IOException {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    byte[][] fields = RegionInfo.parseRegionName(regionName);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    long regionId = Long.parseLong(Bytes.toString(fields[2]));<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    int replicaId = fields.length &gt; 3 ? Integer.parseInt(Bytes.toString(fields[3]), 16) : 0;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    return RegionInfoBuilder.newBuilder(TableName.valueOf(fields[0]))<a name="line.363"></a>
+<span class="sourceLineNo">364</span>              .setStartKey(fields[1])<a name="line.364"></a>
+<span class="sourceLineNo">365</span>              .setEndKey(fields[2])<a name="line.365"></a>
+<span class="sourceLineNo">366</span>              .setSplit(false)<a name="line.366"></a>
+<span class="sourceLineNo">367</span>              .setRegionId(regionId)<a name="line.367"></a>
+<span class="sourceLineNo">368</span>              .setReplicaId(replicaId)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>              .build();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  /**<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * Gets the result in hbase:meta for the specified region.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * @param connection connection we're using<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param regionName region we're looking for<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @return result of the specified region<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   */<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  public static Result getRegionResult(Connection connection,<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      byte[] regionName) throws IOException {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    Get get = new Get(regionName);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return get(getMetaHTable(connection), get);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>  /**<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * Get regions from the merge qualifier of the specified merged region<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * @return null if it doesn't contain merge qualifier, else two merge regions<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  @Nullable<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  public static Pair&lt;RegionInfo, RegionInfo&gt; getRegionsFromMergeQualifier(<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      Connection connection, byte[] regionName) throws IOException {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    Result result = getRegionResult(connection, regionName);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    RegionInfo mergeA = getRegionInfo(result, HConstants.MERGEA_QUALIFIER);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    RegionInfo mergeB = getRegionInfo(result, HConstants.MERGEB_QUALIFIER);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    if (mergeA == null &amp;&amp; mergeB == null) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      return null;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    return new Pair&lt;&gt;(mergeA, mergeB);<a name="line.398"></a>
+<span class="sourceLineNo">399</span> }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>  /**<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   * Checks if the specified table exists.  Looks at the hbase:meta table hosted on<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   * the specified server.<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * @param connection connection we're using<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   * @param tableName table to check<a name="line.405"></a>
+<span class="sourceLineNo">406</span>   * @return true if the table exists in meta, false if not<a name="line.406"></a>
+<span class="sourceLineNo">407</span>   */<a name="line.407"></a>
+<span class="sourceLineNo">408</span>  public static boolean tableExists(Connection connection,<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      final TableName tableName)<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  throws IOException {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // Catalog tables always exist.<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    return tableName.equals(TableName.META_TABLE_NAME)<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        || getTableState(connection, tableName) != null;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  }<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>  /**<a name="line.416"></a>
+<span class="sourceLineNo">417</span>   * Lists all of the regions currently in META.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   *<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * @param connection to connect with<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   * @param excludeOfflinedSplitParents False if we are to include offlined/splitparents regions,<a name="line.420"></a>
+<span class="sourceLineNo">421</span>   *                                    true and we'll leave out offlined regions from returned list<a name="line.421"></a>
+<span class="sourceLineNo">422</span>   * @return List of all user-space regions.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>   */<a name="line.423"></a>
+<span class="sourceLineNo">424</span>  @VisibleForTesting<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  public static List&lt;RegionInfo&gt; getAllRegions(Connection connection,<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      boolean excludeOfflinedSplitParents)<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      throws IOException {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result;<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>    result = getTableRegionsAndLocations(connection, null,<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        excludeOfflinedSplitParents);<a name="line.431"></a>
 <span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>  }<a name="line.433"></a>
+<span class="sourceLineNo">433</span>    return getListOfRegionInfos(result);<a name="line.433"></a>
 <span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>  /**<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * Gets all of the regions of the specified table. Do not use this method<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * to get meta table regions, use methods in MetaTableLocator instead.<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * @param connection connection we're using<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   * @param tableName table we're looking for<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   * @return Ordered list of {@link RegionInfo}.<a name="line.440"></a>
-<span class="sourceLineNo">441</span>   */<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  public static List&lt;RegionInfo&gt; getTableRegions(Connection connection, TableName tableName)<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  throws IOException {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    return getTableRegions(connection, tableName, false);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>  /**<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * Gets all of the regions of the specified table. Do not use this method<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   * to get meta table regions, use methods in MetaTableLocator instead.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * @param connection connection we're using<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * @param tableName table we're looking for<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * @param excludeOfflinedSplitParents If true, do not include offlined split<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * parents in the return.<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * @return Ordered list of {@link RegionInfo}.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   */<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  public static List&lt;RegionInfo&gt; getTableRegions(Connection connection, TableName tableName,<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      final boolean excludeOfflinedSplitParents) throws IOException {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result =<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      getTableRegionsAndLocations(connection, tableName, excludeOfflinedSplitParents);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    return getListOfRegionInfos(result);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>  }<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>  private static List&lt;RegionInfo&gt; getListOfRegionInfos(<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      final List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; pairs) {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    if (pairs == null || pairs.isEmpty()) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      return Collections.emptyList();<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    List&lt;RegionInfo&gt; result = new ArrayList&lt;&gt;(pairs.size());<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    for (Pair&lt;RegionInfo, ServerName&gt; pair : pairs) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      result.add(pair.getFirst());<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return result;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * @param tableName table we're working with<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @return start row for scanning META according to query type<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  public static byte[] getTableStartRowForMeta(TableName tableName, QueryType type) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    if (tableName == null) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      return null;<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    }<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    switch (type) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    case REGION:<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      byte[] startRow = new byte[tableName.getName().length + 2];<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      System.arraycopy(tableName.getName(), 0, startRow, 0, tableName.getName().length);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      startRow[startRow.length - 2] = HConstants.DELIMITER;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      startRow[startRow.length - 1] = HConstants.DELIMITER;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      return startRow;<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    case ALL:<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    case TABLE:<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    default:<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      return tableName.getName();<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  }<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>  /**<a name="line.497"></a>
-<span class="sourceLineNo">498</span>   * @param tableName table we're working with<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * @return stop row for scanning META according to query type<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   */<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  public static byte[] getTableStopRowForMeta(TableName tableName, QueryType type) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    if (tableName == null) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      return null;<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    }<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    final byte[] stopRow;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    switch (type) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    case REGION:<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      stopRow = new byte[tableName.getName().length + 3];<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      System.arraycopy(tableName.getName(), 0, stopRow, 0, tableName.getName().length);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      stopRow[stopRow.length - 3] = ' ';<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      stopRow[stopRow.length - 2] = HConstants.DELIMITER;<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      stopRow[stopRow.length - 1] = HConstants.DELIMITER;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      break;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    case ALL:<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    case TABLE:<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    default:<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      stopRow = new byte[tableName.getName().length + 1];<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      System.arraycopy(tableName.getName(), 0, stopRow, 0, tableName.getName().length);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      stopRow[stopRow.length - 1] = ' ';<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      break;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    }<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    return stopRow;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>  /**<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * This method creates a Scan object that will only scan catalog rows that<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * belong to the specified table. It doesn't specify any columns.<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   * This is a better alternative to just using a start row and scan until<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * it hits a new table since that requires parsing the HRI to get the table<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * name.<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * @param tableName bytes of table's name<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * @return configured Scan object<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   */<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  @Deprecated<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  public static Scan getScanForTableName(Connection connection, TableName tableName) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    // Start key is just the table name with delimiters<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    byte[] startKey = getTableStartRowForMeta(tableName, QueryType.REGION);<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    // Stop key appends the smallest possible char to the table name<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    byte[] stopKey = getTableStopRowForMeta(tableName, QueryType.REGION);<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>    Scan scan = getMetaScan(connection, -1);<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    scan.setStartRow(startKey);<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    scan.setStopRow(stopKey);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    return scan;<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>  private static Scan getMetaScan(Connection connection, int rowUpperLimit) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    Scan scan = new Scan();<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    int scannerCaching = connection.getConfiguration()<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        .getInt(HConstants.HBASE_META_SCANNER_CACHING,<a name="line.550"></a>
-<span class="sourceLineNo">551</span>            HConstants.DEFAULT_HBASE_META_SCANNER_CACHING);<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    if (connection.getConfiguration().getBoolean(HConstants.USE_META_REPLICAS,<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        HConstants.DEFAULT_USE_META_REPLICAS)) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      scan.setConsistency(Consistency.TIMELINE);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    if (rowUpperLimit &gt; 0) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      scan.setLimit(rowUpperLimit);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      scan.setReadType(Scan.ReadType.PREAD);<a name="line.558"></a>
-<span class="sourceLineNo">559</span

<TRUNCATED>

[19/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
index 7600159..a6039ad 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
@@ -350,8 +350,8 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceFactoryImpl.SourceStorage.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">MetricsHBaseServerSourceFactoryImpl.SourceStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/CallEvent.Type.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">CallEvent.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.BufferCallAction.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">BufferCallBeforeInitHandler.BufferCallAction</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/CallEvent.Type.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">CallEvent.Type</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
index 99a6541..b11f6ad 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -293,10 +293,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/CellCounter.CellCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">CellCounter.CellCounterMapper.Counters</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSplit.Version.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TableSplit.Version</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/RowCounter.RowCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">RowCounter.RowCounterMapper.Counters</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/CellCounter.CellCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">CellCounter.CellCounterMapper.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">SyncTable.SyncMapper.Counter</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSplit.Version.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TableSplit.Version</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
index ad40e69..eb945fb 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
@@ -197,8 +197,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.LocalityType.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.LocalityType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.Type.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.Action.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.LocalityType.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.LocalityType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MasterProcedureEnv.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MasterProcedureEnv.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MasterProcedureEnv.html
index c24937b..c3e6de8 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MasterProcedureEnv.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/class-use/MasterProcedureEnv.html
@@ -2043,136 +2043,151 @@
                 org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState&nbsp;state)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html?is-external=true" title="class or interface in java.util.stream">Stream</a>&lt;<a href="../../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;</code></td>
-<td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getTables-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getTables</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">AbstractPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/AbstractPeerProcedure.html#hasLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">hasLock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">AbstractPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/AbstractPeerProcedure.html#holdLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">holdLock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">AddPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#postPeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postPeerModification</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">EnablePeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/EnablePeerProcedure.html#postPeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postPeerModification</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">UpdatePeerConfigProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#postPeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postPeerModification</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected abstract void</code></td>
 <td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#postPeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postPeerModification</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Called before we finish the procedure.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">DisablePeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/DisablePeerProcedure.html#postPeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postPeerModification</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">RemovePeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/RemovePeerProcedure.html#postPeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postPeerModification</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">AddPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#prePeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prePeerModification</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">EnablePeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/EnablePeerProcedure.html#prePeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prePeerModification</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">UpdatePeerConfigProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#prePeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prePeerModification</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected abstract void</code></td>
 <td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#prePeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prePeerModification</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Called before we start the actual processing.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">DisablePeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/DisablePeerProcedure.html#prePeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prePeerModification</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">RemovePeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/RemovePeerProcedure.html#prePeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prePeerModification</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#refreshPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.master.procedure.PeerProcedureInterface.PeerOperationType-">refreshPeer</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
            <a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">PeerProcedureInterface.PeerOperationType</a>&nbsp;type)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">AbstractPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/AbstractPeerProcedure.html#releaseLock-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">releaseLock</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteOperation.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.RemoteOperation</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RefreshPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html#remoteCallBuild-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-">remoteCallBuild</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                <a href="../../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;remote)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">RefreshPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html#remoteCallFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.ServerName-java.io.IOException-">remoteCallFailed</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                 <a href="../../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;remote,
                 <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;exception)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">RefreshPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html#remoteOperationCompleted-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">remoteOperationCompleted</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">RefreshPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html#remoteOperationFailed-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">remoteOperationFailed</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                      <a href="../../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureException.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureException</a>&nbsp;error)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#reopenRegions-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">reopenRegions</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">RefreshPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/RefreshPeerProcedure.html#rollback-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">rollback</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">rollbackState</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
              org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState&nbsp;state)</code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setLastPushedSequenceId-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">setLastPushedSequenceId</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+                       <a href="../../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig)</code>&nbsp;</td>
+</tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setLastSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">setLastSequenceIdForSerialPeer</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setLastPushedSequenceIdForTable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.TableName-java.util.Map-">setLastPushedSequenceIdForTable</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+                               <a href="../../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;lastSeqIds)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">AddPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#updatePeerStorage-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updatePeerStorage</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">AddPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#updateLastPushedSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateLastPushedSequenceIdForSerialPeer</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">EnablePeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/EnablePeerProcedure.html#updatePeerStorage-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updatePeerStorage</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">UpdatePeerConfigProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#updateLastPushedSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateLastPushedSequenceIdForSerialPeer</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">UpdatePeerConfigProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#updatePeerStorage-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updatePeerStorage</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#updateLastPushedSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateLastPushedSequenceIdForSerialPeer</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">AddPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#updatePeerStorage-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updatePeerStorage</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">EnablePeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/EnablePeerProcedure.html#updatePeerStorage-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updatePeerStorage</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">UpdatePeerConfigProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#updatePeerStorage-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updatePeerStorage</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>protected abstract void</code></td>
 <td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#updatePeerStorage-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updatePeerStorage</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">DisablePeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/DisablePeerProcedure.html#updatePeerStorage-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updatePeerStorage</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">RemovePeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/replication/RemovePeerProcedure.html#updatePeerStorage-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updatePeerStorage</a></span>(<a href="../../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html
index 6de11d3..ddfc1b5 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -134,7 +134,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.37">AddPeerProcedure</a>
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.38">AddPeerProcedure</a>
 extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></pre>
 <div class="block">The procedure for adding a new replication peer.</div>
 </li>
@@ -198,6 +198,13 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 </tr>
 </table>
 <ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.master.replication.ModifyPeerProcedure">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.master.replication.<a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#UPDATE_LAST_SEQ_ID_BATCH_SIZE">UPDATE_LAST_SEQ_ID_BATCH_SIZE</a></code></li>
+</ul>
+<ul class="blockList">
 <li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure">
 <!--   -->
 </a>
@@ -270,23 +277,23 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#getPeerOperationType--">getPeerOperationType</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i4" class="altColor">
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#nextStateAfterRefresh--">nextStateAfterRefresh</a></span>()</code>
+<div class="block">Implementation class can override this method.</div>
+</td>
+</tr>
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#postPeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postPeerModification</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Called before we finish the procedure.</div>
 </td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#prePeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prePeerModification</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Called before we start the actual processing.</div>
 </td>
 </tr>
-<tr id="i6" class="altColor">
-<td class="colFirst"><code>protected boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#reopenRegionsAfterRefresh--">reopenRegionsAfterRefresh</a></span>()</code>
-<div class="block">Implementation class can override this method.</div>
-</td>
-</tr>
 <tr id="i7" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)</code>
@@ -296,6 +303,10 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 </tr>
 <tr id="i8" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#updateLastPushedSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateLastPushedSequenceIdForSerialPeer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#updatePeerStorage-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updatePeerStorage</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
 </table>
@@ -304,7 +315,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.replication.<a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">executeFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getInitialState--">getInitialState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getOldPeerConfig--">getOldPeerConfig</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getState-int-">getState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">getStateId</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedu
 re.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">rollbackState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">executeFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getInitialState--">getInitialState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getOldPeerConfig--">getOldPeerConfig</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getState-int-">getState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">getStateId</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedu
 re.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">rollbackState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setLastPushedSequenceId-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">setLastPushedSequenceId</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setLastPushedSequenceIdForTable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.TableName-java.util.Map-">setLastPushedSequenceIdForTable</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure">
@@ -354,7 +365,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <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/master/replication/AddPeerProcedure.html#line.39">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.40">LOG</a></pre>
 </li>
 </ul>
 <a name="peerConfig">
@@ -363,7 +374,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockList">
 <li class="blockList">
 <h4>peerConfig</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.41">peerConfig</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.42">peerConfig</a></pre>
 </li>
 </ul>
 <a name="enabled">
@@ -372,7 +383,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockListLast">
 <li class="blockList">
 <h4>enabled</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.43">enabled</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.44">enabled</a></pre>
 </li>
 </ul>
 </li>
@@ -389,7 +400,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockList">
 <li class="blockList">
 <h4>AddPeerProcedure</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.45">AddPeerProcedure</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.46">AddPeerProcedure</a>()</pre>
 </li>
 </ul>
 <a name="AddPeerProcedure-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-boolean-">
@@ -398,7 +409,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockListLast">
 <li class="blockList">
 <h4>AddPeerProcedure</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.48">AddPeerProcedure</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;peerId,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.49">AddPeerProcedure</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;peerId,
                         <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig,
                         boolean&nbsp;enabled)</pre>
 </li>
@@ -417,23 +428,40 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockList">
 <li class="blockList">
 <h4>getPeerOperationType</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">PeerProcedureInterface.PeerOperationType</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.55">getPeerOperationType</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">PeerProcedureInterface.PeerOperationType</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.56">getPeerOperationType</a>()</pre>
+</li>
+</ul>
+<a name="nextStateAfterRefresh--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>nextStateAfterRefresh</h4>
+<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.61">nextStateAfterRefresh</a>()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#nextStateAfterRefresh--">ModifyPeerProcedure</a></code></span></div>
+<div class="block">Implementation class can override this method. By default we will jump to
+ POST_PEER_MODIFICATION and finish the procedure.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#nextStateAfterRefresh--">nextStateAfterRefresh</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></code></dd>
+</dl>
 </li>
 </ul>
-<a name="reopenRegionsAfterRefresh--">
+<a name="updateLastPushedSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>reopenRegionsAfterRefresh</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.60">reopenRegionsAfterRefresh</a>()</pre>
-<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#reopenRegionsAfterRefresh--">ModifyPeerProcedure</a></code></span></div>
-<div class="block">Implementation class can override this method. The default return value is false which means we
- will jump to POST_PEER_MODIFICATION and finish the procedure. If returns true, we will jump to
- SERIAL_PEER_REOPEN_REGIONS.</div>
+<h4>updateLastPushedSequenceIdForSerialPeer</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.67">updateLastPushedSequenceIdForSerialPeer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+                                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
+                                                       <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#reopenRegionsAfterRefresh--">reopenRegionsAfterRefresh</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></code></dd>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#updateLastPushedSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateLastPushedSequenceIdForSerialPeer</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></code></dd>
 </dl>
 </li>
 </ul>
@@ -443,7 +471,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockList">
 <li class="blockList">
 <h4>enablePeerBeforeFinish</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.65">enablePeerBeforeFinish</a>()</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.73">enablePeerBeforeFinish</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#enablePeerBeforeFinish--">ModifyPeerProcedure</a></code></span></div>
 <div class="block">The implementation class should override this method if the procedure may enter the serial
  related states.</div>
@@ -459,7 +487,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockList">
 <li class="blockList">
 <h4>getNewPeerConfig</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.70">getNewPeerConfig</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.78">getNewPeerConfig</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getNewPeerConfig--">getNewPeerConfig</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></code></dd>
@@ -472,7 +500,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockList">
 <li class="blockList">
 <h4>prePeerModification</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.75">prePeerModification</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.83">prePeerModification</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                    <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#prePeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">ModifyPeerProcedure</a></code></span></div>
@@ -496,7 +524,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockList">
 <li class="blockList">
 <h4>updatePeerStorage</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.85">updatePeerStorage</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.93">updatePeerStorage</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                           throws <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -512,7 +540,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockList">
 <li class="blockList">
 <h4>postPeerModification</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.91">postPeerModification</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.99">postPeerModification</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                     <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#postPeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">ModifyPeerProcedure</a></code></span></div>
@@ -538,7 +566,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockList">
 <li class="blockList">
 <h4>serializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.102">serializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.110">serializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
 <div class="block">The user-level code of the procedure may have some state to
@@ -560,7 +588,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockListLast">
 <li class="blockList">
 <h4>deserializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.109">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#line.117">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
 <div class="block">Called on store load to allow the user to decode the previously serialized

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/master/replication/DisablePeerProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/replication/DisablePeerProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/replication/DisablePeerProcedure.html
index 683e5ee..d5a490d 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/replication/DisablePeerProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/replication/DisablePeerProcedure.html
@@ -190,6 +190,13 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 </tr>
 </table>
 <ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.master.replication.ModifyPeerProcedure">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.master.replication.<a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#UPDATE_LAST_SEQ_ID_BATCH_SIZE">UPDATE_LAST_SEQ_ID_BATCH_SIZE</a></code></li>
+</ul>
+<ul class="blockList">
 <li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure">
 <!--   -->
 </a>
@@ -277,7 +284,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.replication.<a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#enablePeerBeforeFinish--">enablePeerBeforeFinish</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">executeFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getInitialState--">getInitialState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getNewPeerConfig--">getNewPeerConfig</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getOldPeerConfig--">getOldPeerConfig</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getState-int-">getState</a>, <a href="../../../.
 ./../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">getStateId</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#reopenRegionsAfterRefresh--">reopenRegionsAfterRefresh</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">rollbackState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#enablePeerBeforeFinish--">enablePeerBeforeFinish</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">executeFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getInitialState--">getInitialState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getNewPeerConfig--">getNewPeerConfig</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getOldPeerConfig--">getOldPeerConfig</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getState-int-">getState</a>, <a href="../../../.
 ./../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">getStateId</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#nextStateAfterRefresh--">nextStateAfterRefresh</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">rollbackState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setLastPushedSequenceId-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">setLastPushedSequenceId</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setL
 astPushedSequenceIdForTable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.TableName-java.util.Map-">setLastPushedSequenceIdForTable</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#updateLastPushedSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateLastPushedSequenceIdForSerialPeer</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/master/replication/EnablePeerProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/replication/EnablePeerProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/replication/EnablePeerProcedure.html
index beb277a..6ad9876 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/replication/EnablePeerProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/replication/EnablePeerProcedure.html
@@ -190,6 +190,13 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 </tr>
 </table>
 <ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.master.replication.ModifyPeerProcedure">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.master.replication.<a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#UPDATE_LAST_SEQ_ID_BATCH_SIZE">UPDATE_LAST_SEQ_ID_BATCH_SIZE</a></code></li>
+</ul>
+<ul class="blockList">
 <li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure">
 <!--   -->
 </a>
@@ -277,7 +284,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.replication.<a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#enablePeerBeforeFinish--">enablePeerBeforeFinish</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">executeFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getInitialState--">getInitialState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getNewPeerConfig--">getNewPeerConfig</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getOldPeerConfig--">getOldPeerConfig</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getState-int-">getState</a>, <a href="../../../.
 ./../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">getStateId</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#reopenRegionsAfterRefresh--">reopenRegionsAfterRefresh</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">rollbackState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#enablePeerBeforeFinish--">enablePeerBeforeFinish</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">executeFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getInitialState--">getInitialState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getNewPeerConfig--">getNewPeerConfig</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getOldPeerConfig--">getOldPeerConfig</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getState-int-">getState</a>, <a href="../../../.
 ./../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">getStateId</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#nextStateAfterRefresh--">nextStateAfterRefresh</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">rollbackState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setLastPushedSequenceId-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">setLastPushedSequenceId</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setL
 astPushedSequenceIdForTable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.TableName-java.util.Map-">setLastPushedSequenceIdForTable</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#updateLastPushedSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateLastPushedSequenceIdForSerialPeer</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure">


[11/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.DefaultVisitorBase.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.DefaultVisitorBase.html b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.DefaultVisitorBase.html
index 6007f27..4ce6735 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.DefaultVisitorBase.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.DefaultVisitorBase.html
@@ -65,716 +65,716 @@
 <span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Table;<a name="line.57"></a>
 <span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.58"></a>
 <span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsResponse;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.slf4j.Logger;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.slf4j.LoggerFactory;<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.79"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsResponse;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.slf4j.Logger;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.slf4j.LoggerFactory;<a name="line.79"></a>
 <span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>/**<a name="line.81"></a>
-<span class="sourceLineNo">082</span> * &lt;p&gt;<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * Read/write operations on region and assignment information store in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * &lt;/p&gt;<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * &lt;p&gt;<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * Some of the methods of this class take ZooKeeperWatcher as a param. The only reason for this is<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * because when used on client-side (like from HBaseAdmin), we want to use short-living connection<a name="line.87"></a>
-<span class="sourceLineNo">088</span> * (opened before each operation, closed right after), while when used on HM or HRS (like in<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * AssignmentManager) we want permanent connection.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * &lt;/p&gt;<a name="line.90"></a>
-<span class="sourceLineNo">091</span> * &lt;p&gt;<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * HBASE-10070 adds a replicaId to HRI, meaning more than one HRI can be defined for the same table<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * range (table, startKey, endKey). For every range, there will be at least one HRI defined which is<a name="line.93"></a>
-<span class="sourceLineNo">094</span> * called default replica.<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * &lt;/p&gt;<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * &lt;p&gt;<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * Meta layout (as of 0.98 + HBASE-10070) is like:<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * &lt;pre&gt;<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * For each table there is single row in column family 'table' formatted:<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * &amp;lt;tableName&amp;gt; including namespace and columns are:<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * table: state             =&gt; contains table state<a name="line.102"></a>
-<span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * For each table range, there is a single row, formatted like:<a name="line.104"></a>
-<span class="sourceLineNo">105</span> * &amp;lt;tableName&amp;gt;,&amp;lt;startKey&amp;gt;,&amp;lt;regionId&amp;gt;,&amp;lt;encodedRegionName&amp;gt;.<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * This row corresponds to the regionName of the default region replica.<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Columns are:<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * info:regioninfo         =&gt; contains serialized HRI for the default region replica<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * info:server             =&gt; contains hostname:port (in string form) for the server hosting<a name="line.109"></a>
-<span class="sourceLineNo">110</span> *                            the default regionInfo replica<a name="line.110"></a>
-<span class="sourceLineNo">111</span> * info:server_&amp;lt;replicaId&amp;gt =&gt; contains hostname:port (in string form) for the server hosting<a name="line.111"></a>
-<span class="sourceLineNo">112</span> *                                 the regionInfo replica with replicaId<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * info:serverstartcode    =&gt; contains server start code (in binary long form) for the server<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *                            hosting the default regionInfo replica<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * info:serverstartcode_&amp;lt;replicaId&amp;gt =&gt; contains server start code (in binary long form) for<a name="line.115"></a>
-<span class="sourceLineNo">116</span> *                                          the server hosting the regionInfo replica with<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *                                          replicaId<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * info:seqnumDuringOpen   =&gt; contains seqNum (in binary long form) for the region at the time<a name="line.118"></a>
-<span class="sourceLineNo">119</span> *                             the server opened the region with default replicaId<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * info:seqnumDuringOpen_&amp;lt;replicaId&amp;gt =&gt; contains seqNum (in binary long form) for the region<a name="line.120"></a>
-<span class="sourceLineNo">121</span> *                                           at the time the server opened the region with<a name="line.121"></a>
-<span class="sourceLineNo">122</span> *                                           replicaId<a name="line.122"></a>
-<span class="sourceLineNo">123</span> * info:splitA             =&gt; contains a serialized HRI for the first daughter region if the<a name="line.123"></a>
-<span class="sourceLineNo">124</span> *                             region is split<a name="line.124"></a>
-<span class="sourceLineNo">125</span> * info:splitB             =&gt; contains a serialized HRI for the second daughter region if the<a name="line.125"></a>
+<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>/**<a name="line.83"></a>
+<span class="sourceLineNo">084</span> * &lt;p&gt;<a name="line.84"></a>
+<span class="sourceLineNo">085</span> * Read/write operations on region and assignment information store in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * &lt;/p&gt;<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * &lt;p&gt;<a name="line.87"></a>
+<span class="sourceLineNo">088</span> * Some of the methods of this class take ZooKeeperWatcher as a param. The only reason for this is<a name="line.88"></a>
+<span class="sourceLineNo">089</span> * because when used on client-side (like from HBaseAdmin), we want to use short-living connection<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * (opened before each operation, closed right after), while when used on HM or HRS (like in<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * AssignmentManager) we want permanent connection.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * &lt;/p&gt;<a name="line.92"></a>
+<span class="sourceLineNo">093</span> * &lt;p&gt;<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * HBASE-10070 adds a replicaId to HRI, meaning more than one HRI can be defined for the same table<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * range (table, startKey, endKey). For every range, there will be at least one HRI defined which is<a name="line.95"></a>
+<span class="sourceLineNo">096</span> * called default replica.<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * &lt;/p&gt;<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * &lt;p&gt;<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * Meta layout (as of 0.98 + HBASE-10070) is like:<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * &lt;pre&gt;<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * For each table there is single row in column family 'table' formatted:<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * &amp;lt;tableName&amp;gt; including namespace and columns are:<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * table: state             =&gt; contains table state<a name="line.104"></a>
+<span class="sourceLineNo">105</span> *<a name="line.105"></a>
+<span class="sourceLineNo">106</span> * For each table range, there is a single row, formatted like:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * &amp;lt;tableName&amp;gt;,&amp;lt;startKey&amp;gt;,&amp;lt;regionId&amp;gt;,&amp;lt;encodedRegionName&amp;gt;.<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * This row corresponds to the regionName of the default region replica.<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * Columns are:<a name="line.109"></a>
+<span class="sourceLineNo">110</span> * info:regioninfo         =&gt; contains serialized HRI for the default region replica<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * info:server             =&gt; contains hostname:port (in string form) for the server hosting<a name="line.111"></a>
+<span class="sourceLineNo">112</span> *                            the default regionInfo replica<a name="line.112"></a>
+<span class="sourceLineNo">113</span> * info:server_&amp;lt;replicaId&amp;gt =&gt; contains hostname:port (in string form) for the server hosting<a name="line.113"></a>
+<span class="sourceLineNo">114</span> *                                 the regionInfo replica with replicaId<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * info:serverstartcode    =&gt; contains server start code (in binary long form) for the server<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *                            hosting the default regionInfo replica<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * info:serverstartcode_&amp;lt;replicaId&amp;gt =&gt; contains server start code (in binary long form) for<a name="line.117"></a>
+<span class="sourceLineNo">118</span> *                                          the server hosting the regionInfo replica with<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *                                          replicaId<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * info:seqnumDuringOpen   =&gt; contains seqNum (in binary long form) for the region at the time<a name="line.120"></a>
+<span class="sourceLineNo">121</span> *                             the server opened the region with default replicaId<a name="line.121"></a>
+<span class="sourceLineNo">122</span> * info:seqnumDuringOpen_&amp;lt;replicaId&amp;gt =&gt; contains seqNum (in binary long form) for the region<a name="line.122"></a>
+<span class="sourceLineNo">123</span> *                                           at the time the server opened the region with<a name="line.123"></a>
+<span class="sourceLineNo">124</span> *                                           replicaId<a name="line.124"></a>
+<span class="sourceLineNo">125</span> * info:splitA             =&gt; contains a serialized HRI for the first daughter region if the<a name="line.125"></a>
 <span class="sourceLineNo">126</span> *                             region is split<a name="line.126"></a>
-<span class="sourceLineNo">127</span> * info:mergeA             =&gt; contains a serialized HRI for the first parent region if the<a name="line.127"></a>
-<span class="sourceLineNo">128</span> *                             region is the result of a merge<a name="line.128"></a>
-<span class="sourceLineNo">129</span> * info:mergeB             =&gt; contains a serialized HRI for the second parent region if the<a name="line.129"></a>
+<span class="sourceLineNo">127</span> * info:splitB             =&gt; contains a serialized HRI for the second daughter region if the<a name="line.127"></a>
+<span class="sourceLineNo">128</span> *                             region is split<a name="line.128"></a>
+<span class="sourceLineNo">129</span> * info:mergeA             =&gt; contains a serialized HRI for the first parent region if the<a name="line.129"></a>
 <span class="sourceLineNo">130</span> *                             region is the result of a merge<a name="line.130"></a>
-<span class="sourceLineNo">131</span> * &lt;/pre&gt;<a name="line.131"></a>
-<span class="sourceLineNo">132</span> * &lt;/p&gt;<a name="line.132"></a>
-<span class="sourceLineNo">133</span> * &lt;p&gt;<a name="line.133"></a>
-<span class="sourceLineNo">134</span> * The actual layout of meta should be encapsulated inside MetaTableAccessor methods, and should not<a name="line.134"></a>
-<span class="sourceLineNo">135</span> * leak out of it (through Result objects, etc)<a name="line.135"></a>
-<span class="sourceLineNo">136</span> * &lt;/p&gt;<a name="line.136"></a>
-<span class="sourceLineNo">137</span> */<a name="line.137"></a>
-<span class="sourceLineNo">138</span>@InterfaceAudience.Private<a name="line.138"></a>
-<span class="sourceLineNo">139</span>public class MetaTableAccessor {<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static final Logger LOG = LoggerFactory.getLogger(MetaTableAccessor.class);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static final Logger METALOG = LoggerFactory.getLogger("org.apache.hadoop.hbase.META");<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static final byte[] META_REGION_PREFIX;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  static {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    // Copy the prefix from FIRST_META_REGIONINFO into META_REGION_PREFIX.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    // FIRST_META_REGIONINFO == 'hbase:meta,,1'.  META_REGION_PREFIX == 'hbase:meta,'<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    int len = RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName().length - 2;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    META_REGION_PREFIX = new byte [len];<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    System.arraycopy(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName(), 0,<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      META_REGION_PREFIX, 0, len);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>  @VisibleForTesting<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  public static final byte[] REPLICATION_PARENT_QUALIFIER = Bytes.toBytes("parent");<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  private static final byte ESCAPE_BYTE = (byte) 0xFF;<a name="line.157"></a>
+<span class="sourceLineNo">131</span> * info:mergeB             =&gt; contains a serialized HRI for the second parent region if the<a name="line.131"></a>
+<span class="sourceLineNo">132</span> *                             region is the result of a merge<a name="line.132"></a>
+<span class="sourceLineNo">133</span> * &lt;/pre&gt;<a name="line.133"></a>
+<span class="sourceLineNo">134</span> * &lt;/p&gt;<a name="line.134"></a>
+<span class="sourceLineNo">135</span> * &lt;p&gt;<a name="line.135"></a>
+<span class="sourceLineNo">136</span> * The actual layout of meta should be encapsulated inside MetaTableAccessor methods, and should not<a name="line.136"></a>
+<span class="sourceLineNo">137</span> * leak out of it (through Result objects, etc)<a name="line.137"></a>
+<span class="sourceLineNo">138</span> * &lt;/p&gt;<a name="line.138"></a>
+<span class="sourceLineNo">139</span> */<a name="line.139"></a>
+<span class="sourceLineNo">140</span>@InterfaceAudience.Private<a name="line.140"></a>
+<span class="sourceLineNo">141</span>public class MetaTableAccessor {<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static final Logger LOG = LoggerFactory.getLogger(MetaTableAccessor.class);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static final Logger METALOG = LoggerFactory.getLogger("org.apache.hadoop.hbase.META");<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static final byte[] META_REGION_PREFIX;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  static {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    // Copy the prefix from FIRST_META_REGIONINFO into META_REGION_PREFIX.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    // FIRST_META_REGIONINFO == 'hbase:meta,,1'.  META_REGION_PREFIX == 'hbase:meta,'<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    int len = RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName().length - 2;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    META_REGION_PREFIX = new byte [len];<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    System.arraycopy(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName(), 0,<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      META_REGION_PREFIX, 0, len);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  }<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span>  @VisibleForTesting<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  public static final byte[] REPLICATION_PARENT_QUALIFIER = Bytes.toBytes("parent");<a name="line.157"></a>
 <span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  private static final byte SEPARATED_BYTE = 0x00;<a name="line.159"></a>
+<span class="sourceLineNo">159</span>  private static final byte ESCAPE_BYTE = (byte) 0xFF;<a name="line.159"></a>
 <span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  /**<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * Lists all of the table regions currently in META.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * Deprecated, keep there until some test use this.<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * @param connection what we will use<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * @param tableName table to list<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @return Map of all user-space regions to servers<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * @deprecated use {@link #getTableRegionsAndLocations}, region can have multiple locations<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   */<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  @Deprecated<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  public static NavigableMap&lt;RegionInfo, ServerName&gt; allTableRegions(<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      Connection connection, final TableName tableName) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    final NavigableMap&lt;RegionInfo, ServerName&gt; regions = new TreeMap&lt;&gt;();<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    Visitor visitor = new TableVisitorBase(tableName) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      public boolean visitInternal(Result result) throws IOException {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        RegionLocations locations = getRegionLocations(result);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>        if (locations == null) return true;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        for (HRegionLocation loc : locations.getRegionLocations()) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          if (loc != null) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>            RegionInfo regionInfo = loc.getRegionInfo();<a name="line.180"></a>
-<span class="sourceLineNo">181</span>            regions.put(regionInfo, loc.getServerName());<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>        return true;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    };<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    scanMetaForTableRegions(connection, visitor, tableName);<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    return regions;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>  @InterfaceAudience.Private<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  public enum QueryType {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    ALL(HConstants.TABLE_FAMILY, HConstants.CATALOG_FAMILY),<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    REGION(HConstants.CATALOG_FAMILY),<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    TABLE(HConstants.TABLE_FAMILY),<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    REPLICATION(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>    private final byte[][] families;<a name="line.198"></a>
+<span class="sourceLineNo">161</span>  private static final byte SEPARATED_BYTE = 0x00;<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  /**<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   * Lists all of the table regions currently in META.<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * Deprecated, keep there until some test use this.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * @param connection what we will use<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * @param tableName table to list<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * @return Map of all user-space regions to servers<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * @deprecated use {@link #getTableRegionsAndLocations}, region can have multiple locations<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  @Deprecated<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public static NavigableMap&lt;RegionInfo, ServerName&gt; allTableRegions(<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      Connection connection, final TableName tableName) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    final NavigableMap&lt;RegionInfo, ServerName&gt; regions = new TreeMap&lt;&gt;();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    Visitor visitor = new TableVisitorBase(tableName) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      @Override<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      public boolean visitInternal(Result result) throws IOException {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        RegionLocations locations = getRegionLocations(result);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        if (locations == null) return true;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        for (HRegionLocation loc : locations.getRegionLocations()) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          if (loc != null) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            RegionInfo regionInfo = loc.getRegionInfo();<a name="line.182"></a>
+<span class="sourceLineNo">183</span>            regions.put(regionInfo, loc.getServerName());<a name="line.183"></a>
+<span class="sourceLineNo">184</span>          }<a name="line.184"></a>
+<span class="sourceLineNo">185</span>        }<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        return true;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    };<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    scanMetaForTableRegions(connection, visitor, tableName);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    return regions;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  @InterfaceAudience.Private<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  public enum QueryType {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    ALL(HConstants.TABLE_FAMILY, HConstants.CATALOG_FAMILY),<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    REGION(HConstants.CATALOG_FAMILY),<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    TABLE(HConstants.TABLE_FAMILY),<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    REPLICATION(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.198"></a>
 <span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>    QueryType(byte[]... families) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      this.families = families;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span>    byte[][] getFamilies() {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return this.families;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private static final Pattern SERVER_COLUMN_PATTERN<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    = Pattern.compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  ////////////////////////<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  // Reading operations //<a name="line.217"></a>
+<span class="sourceLineNo">200</span>    private final byte[][] families;<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    QueryType(byte[]... families) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      this.families = families;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>    byte[][] getFamilies() {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      return this.families;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    }<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  private static final Pattern SERVER_COLUMN_PATTERN<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    = Pattern.compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
 <span class="sourceLineNo">218</span>  ////////////////////////<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>  /**<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   * @param connection connection we're using<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * @param visitor Visitor invoked against each row in regions family.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  public static void fullScanRegions(Connection connection,<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      final Visitor visitor)<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      throws IOException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    scanMeta(connection, null, null, QueryType.REGION, visitor);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  /**<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   * @param connection connection we're using<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public static List&lt;Result&gt; fullScanRegions(Connection connection)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      throws IOException {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    return fullScan(connection, QueryType.REGION);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  /**<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for tables.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   * @param connection connection we're using<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * @param visitor Visitor invoked against each row in tables family.<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  public static void fullScanTables(Connection connection,<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      final Visitor visitor)<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      throws IOException {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    scanMeta(connection, null, null, QueryType.TABLE, visitor);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>  /**<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   * @param connection connection we're using<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   * @param type scanned part of meta<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * @return List of {@link Result}<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  public static List&lt;Result&gt; fullScan(Connection connection, QueryType type)<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    throws IOException {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    CollectAllVisitor v = new CollectAllVisitor();<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    scanMeta(connection, null, null, type, v);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return v.getResults();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>  /**<a name="line.264"></a>
-<span class="sourceLineNo">265</span>   * Callers should call close on the returned {@link Table} instance.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>   * @param connection connection we're using to access Meta<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   * @return An {@link Table} for &lt;code&gt;hbase:meta&lt;/code&gt;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   */<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  public static Table getMetaHTable(final Connection connection)<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  throws IOException {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // We used to pass whole CatalogTracker in here, now we just pass in Connection<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    if (connection == null) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      throw new NullPointerException("No connection");<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    } else if (connection.isClosed()) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      throw new IOException("connection is closed");<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return connection.getTable(TableName.META_TABLE_NAME);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>  /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * @param t Table to use (will be closed when done).<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   * @param g Get to run<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   */<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  private static Result get(final Table t, final Get g) throws IOException {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    if (t == null) return null;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    try {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      return t.get(g);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    } finally {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      t.close();<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    }<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  /**<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * Gets the region info and assignment for the specified region.<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @param connection connection we're using<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * @param regionName Region to lookup.<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   * @return Location and RegionInfo for &lt;code&gt;regionName&lt;/code&gt;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>   * @deprecated use {@link #getRegionLocation(Connection, byte[])} instead<a name="line.298"></a>
-<span class="sourceLineNo">299</span>   */<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  @Deprecated<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  public static Pair&lt;RegionInfo, ServerName&gt; getRegion(Connection connection, byte [] regionName)<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    throws IOException {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    HRegionLocation location = getRegionLocation(connection, regionName);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    return location == null<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      ? null<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      : new Pair&lt;&gt;(location.getRegionInfo(), location.getServerName());<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  /**<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * Returns the HRegionLocation from meta for the given region<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * @param connection connection we're using<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * @param regionName region we're looking for<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * @return HRegionLocation for the given region<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public static HRegionLocation getRegionLocation(Connection connection, byte[] regionName)<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      throws IOException {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    byte[] row = regionName;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    RegionInfo parsedInfo = null;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    try {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      parsedInfo = parseRegionInfoFromRegionName(regionName);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      row = getMetaKeyForRegion(parsedInfo);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    } catch (Exception parseEx) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      // Ignore. This is used with tableName passed as regionName.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    Get get = new Get(row);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    Result r = get(getMetaHTable(connection), get);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    RegionLocations locations = getRegionLocations(r);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    return locations == null ? null<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      : locations.getRegionLocation(parsedInfo == null ? 0 : parsedInfo.getReplicaId());<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  /**<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * Returns the HRegionLocation from meta for the given region<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * @param connection connection we're using<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   * @param regionInfo region information<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * @return HRegionLocation for the given region<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   */<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static HRegionLocation getRegionLocation(Connection connection, RegionInfo regionInfo)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      throws IOException {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    byte[] row = getMetaKeyForRegion(regionInfo);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    Get get = new Get(row);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    Result r = get(getMetaHTable(connection), get);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    return getRegionLocation(r, regionInfo, regionInfo.getReplicaId());<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>  /** Returns the row key to use for this regionInfo */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public static byte[] getMetaKeyForRegion(RegionInfo regionInfo) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    return RegionReplicaUtil.getRegionInfoForDefaultReplica(regionInfo).getRegionName();<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /** Returns an HRI parsed from this regionName. Not all the fields of the HRI<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * is stored in the name, so the returned object should only be used for the fields<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * in the regionName.<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  public static RegionInfo parseRegionInfoFromRegionName(byte[] regionName) throws IOException {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    byte[][] fields = RegionInfo.parseRegionName(regionName);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    long regionId = Long.parseLong(Bytes.toString(fields[2]));<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    int replicaId = fields.length &gt; 3 ? Integer.parseInt(Bytes.toString(fields[3]), 16) : 0;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    return RegionInfoBuilder.newBuilder(TableName.valueOf(fields[0]))<a name="line.361"></a>
-<span class="sourceLineNo">362</span>              .setStartKey(fields[1])<a name="line.362"></a>
-<span class="sourceLineNo">363</span>              .setEndKey(fields[2])<a name="line.363"></a>
-<span class="sourceLineNo">364</span>              .setSplit(false)<a name="line.364"></a>
-<span class="sourceLineNo">365</span>              .setRegionId(regionId)<a name="line.365"></a>
-<span class="sourceLineNo">366</span>              .setReplicaId(replicaId)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>              .build();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * Gets the result in hbase:meta for the specified region.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * @param connection connection we're using<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * @param regionName region we're looking for<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * @return result of the specified region<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   */<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  public static Result getRegionResult(Connection connection,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      byte[] regionName) throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    Get get = new Get(regionName);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    return get(getMetaHTable(connection), get);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span>  /**<a name="line.383"></a>
-<span class="sourceLineNo">384</span>   * Get regions from the merge qualifier of the specified merged region<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * @return null if it doesn't contain merge qualifier, else two merge regions<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   */<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Nullable<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public static Pair&lt;RegionInfo, RegionInfo&gt; getRegionsFromMergeQualifier(<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      Connection connection, byte[] regionName) throws IOException {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    Result result = getRegionResult(connection, regionName);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    RegionInfo mergeA = getRegionInfo(result, HConstants.MERGEA_QUALIFIER);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    RegionInfo mergeB = getRegionInfo(result, HConstants.MERGEB_QUALIFIER);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    if (mergeA == null &amp;&amp; mergeB == null) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      return null;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    return new Pair&lt;&gt;(mergeA, mergeB);<a name="line.396"></a>
-<span class="sourceLineNo">397</span> }<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  /**<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * Checks if the specified table exists.  Looks at the hbase:meta table hosted on<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * the specified server.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param connection connection we're using<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param tableName table to check<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @return true if the table exists in meta, false if not<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  public static boolean tableExists(Connection connection,<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      final TableName tableName)<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  throws IOException {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    // Catalog tables always exist.<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return tableName.equals(TableName.META_TABLE_NAME)<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        || getTableState(connection, tableName) != null;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  /**<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * Lists all of the regions currently in META.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   *<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param connection to connect with<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param excludeOfflinedSplitParents False if we are to include offlined/splitparents regions,<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   *                                    true and we'll leave out offlined regions from returned list<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * @return List of all user-space regions.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   */<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  @VisibleForTesting<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  public static List&lt;RegionInfo&gt; getAllRegions(Connection connection,<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      boolean excludeOfflinedSplitParents)<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      throws IOException {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result;<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>    result = getTableRegionsAndLocations(connection, null,<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        excludeOfflinedSplitParents);<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>    return getListOfRegionInfos(result);<a name="line.431"></a>
+<span class="sourceLineNo">219</span>  // Reading operations //<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  ////////////////////////<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>  /**<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * @param connection connection we're using<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * @param visitor Visitor invoked against each row in regions family.<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   */<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public static void fullScanRegions(Connection connection,<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      final Visitor visitor)<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      throws IOException {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    scanMeta(connection, null, null, QueryType.REGION, visitor);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>  }<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>  /**<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @param connection connection we're using<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  public static List&lt;Result&gt; fullScanRegions(Connection connection)<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      throws IOException {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return fullScan(connection, QueryType.REGION);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  /**<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for tables.<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * @param connection connection we're using<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * @param visitor Visitor invoked against each row in tables family.<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   */<a name="line.246"></a>
+<span class="sourceLineNo">247</span>  public static void fullScanTables(Connection connection,<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      final Visitor visitor)<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    scanMeta(connection, null, null, QueryType.TABLE, visitor);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  }<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>  /**<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * @param connection connection we're using<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   * @param type scanned part of meta<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   * @return List of {@link Result}<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  public static List&lt;Result&gt; fullScan(Connection connection, QueryType type)<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    throws IOException {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    CollectAllVisitor v = new CollectAllVisitor();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    scanMeta(connection, null, null, type, v);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    return v.getResults();<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  }<a name="line.264"></a>
+<span class="sourceLineNo">265</span><a name="line.265"></a>
+<span class="sourceLineNo">266</span>  /**<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   * Callers should call close on the returned {@link Table} instance.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   * @param connection connection we're using to access Meta<a name="line.268"></a>
+<span class="sourceLineNo">269</span>   * @return An {@link Table} for &lt;code&gt;hbase:meta&lt;/code&gt;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>   */<a name="line.270"></a>
+<span class="sourceLineNo">271</span>  public static Table getMetaHTable(final Connection connection)<a name="line.271"></a>
+<span class="sourceLineNo">272</span>  throws IOException {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // We used to pass whole CatalogTracker in here, now we just pass in Connection<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    if (connection == null) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      throw new NullPointerException("No connection");<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    } else if (connection.isClosed()) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      throw new IOException("connection is closed");<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    return connection.getTable(TableName.META_TABLE_NAME);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>  /**<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * @param t Table to use (will be closed when done).<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   * @param g Get to run<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   */<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  private static Result get(final Table t, final Get g) throws IOException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    if (t == null) return null;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    try {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      return t.get(g);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    } finally {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      t.close();<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>  /**<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   * Gets the region info and assignment for the specified region.<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   * @param connection connection we're using<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * @param regionName Region to lookup.<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   * @return Location and RegionInfo for &lt;code&gt;regionName&lt;/code&gt;<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   * @deprecated use {@link #getRegionLocation(Connection, byte[])} instead<a name="line.300"></a>
+<span class="sourceLineNo">301</span>   */<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  @Deprecated<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  public static Pair&lt;RegionInfo, ServerName&gt; getRegion(Connection connection, byte [] regionName)<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    throws IOException {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    HRegionLocation location = getRegionLocation(connection, regionName);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    return location == null<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      ? null<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      : new Pair&lt;&gt;(location.getRegionInfo(), location.getServerName());<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>  /**<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   * Returns the HRegionLocation from meta for the given region<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * @param connection connection we're using<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   * @param regionName region we're looking for<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * @return HRegionLocation for the given region<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   */<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public static HRegionLocation getRegionLocation(Connection connection, byte[] regionName)<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      throws IOException {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    byte[] row = regionName;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    RegionInfo parsedInfo = null;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    try {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      parsedInfo = parseRegionInfoFromRegionName(regionName);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      row = getMetaKeyForRegion(parsedInfo);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    } catch (Exception parseEx) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      // Ignore. This is used with tableName passed as regionName.<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    Get get = new Get(row);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    Result r = get(getMetaHTable(connection), get);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    RegionLocations locations = getRegionLocations(r);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    return locations == null ? null<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      : locations.getRegionLocation(parsedInfo == null ? 0 : parsedInfo.getReplicaId());<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>  /**<a name="line.335"></a>
+<span class="sourceLineNo">336</span>   * Returns the HRegionLocation from meta for the given region<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * @param connection connection we're using<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * @param regionInfo region information<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * @return HRegionLocation for the given region<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   */<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  public static HRegionLocation getRegionLocation(Connection connection, RegionInfo regionInfo)<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      throws IOException {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    byte[] row = getMetaKeyForRegion(regionInfo);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    Get get = new Get(row);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    Result r = get(getMetaHTable(connection), get);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    return getRegionLocation(r, regionInfo, regionInfo.getReplicaId());<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  /** Returns the row key to use for this regionInfo */<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  public static byte[] getMetaKeyForRegion(RegionInfo regionInfo) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    return RegionReplicaUtil.getRegionInfoForDefaultReplica(regionInfo).getRegionName();<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  /** Returns an HRI parsed from this regionName. Not all the fields of the HRI<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * is stored in the name, so the returned object should only be used for the fields<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * in the regionName.<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   */<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  public static RegionInfo parseRegionInfoFromRegionName(byte[] regionName) throws IOException {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    byte[][] fields = RegionInfo.parseRegionName(regionName);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    long regionId = Long.parseLong(Bytes.toString(fields[2]));<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    int replicaId = fields.length &gt; 3 ? Integer.parseInt(Bytes.toString(fields[3]), 16) : 0;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    return RegionInfoBuilder.newBuilder(TableName.valueOf(fields[0]))<a name="line.363"></a>
+<span class="sourceLineNo">364</span>              .setStartKey(fields[1])<a name="line.364"></a>
+<span class="sourceLineNo">365</span>              .setEndKey(fields[2])<a name="line.365"></a>
+<span class="sourceLineNo">366</span>              .setSplit(false)<a name="line.366"></a>
+<span class="sourceLineNo">367</span>              .setRegionId(regionId)<a name="line.367"></a>
+<span class="sourceLineNo">368</span>              .setReplicaId(replicaId)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>              .build();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  /**<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * Gets the result in hbase:meta for the specified region.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * @param connection connection we're using<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param regionName region we're looking for<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @return result of the specified region<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   */<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  public static Result getRegionResult(Connection connection,<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      byte[] regionName) throws IOException {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    Get get = new Get(regionName);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return get(getMetaHTable(connection), get);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>  /**<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * Get regions from the merge qualifier of the specified merged region<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * @return null if it doesn't contain merge qualifier, else two merge regions<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  @Nullable<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  public static Pair&lt;RegionInfo, RegionInfo&gt; getRegionsFromMergeQualifier(<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      Connection connection, byte[] regionName) throws IOException {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    Result result = getRegionResult(connection, regionName);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    RegionInfo mergeA = getRegionInfo(result, HConstants.MERGEA_QUALIFIER);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    RegionInfo mergeB = getRegionInfo(result, HConstants.MERGEB_QUALIFIER);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    if (mergeA == null &amp;&amp; mergeB == null) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      return null;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    return new Pair&lt;&gt;(mergeA, mergeB);<a name="line.398"></a>
+<span class="sourceLineNo">399</span> }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>  /**<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   * Checks if the specified table exists.  Looks at the hbase:meta table hosted on<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   * the specified server.<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * @param connection connection we're using<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   * @param tableName table to check<a name="line.405"></a>
+<span class="sourceLineNo">406</span>   * @return true if the table exists in meta, false if not<a name="line.406"></a>
+<span class="sourceLineNo">407</span>   */<a name="line.407"></a>
+<span class="sourceLineNo">408</span>  public static boolean tableExists(Connection connection,<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      final TableName tableName)<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  throws IOException {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // Catalog tables always exist.<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    return tableName.equals(TableName.META_TABLE_NAME)<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        || getTableState(connection, tableName) != null;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  }<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>  /**<a name="line.416"></a>
+<span class="sourceLineNo">417</span>   * Lists all of the regions currently in META.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   *<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * @param connection to connect with<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   * @param excludeOfflinedSplitParents False if we are to include offlined/splitparents regions,<a name="line.420"></a>
+<span class="sourceLineNo">421</span>   *                                    true and we'll leave out offlined regions from returned list<a name="line.421"></a>
+<span class="sourceLineNo">422</span>   * @return List of all user-space regions.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>   */<a name="line.423"></a>
+<span class="sourceLineNo">424</span>  @VisibleForTesting<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  public static List&lt;RegionInfo&gt; getAllRegions(Connection connection,<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      boolean excludeOfflinedSplitParents)<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      throws IOException {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result;<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>    result = getTableRegionsAndLocations(connection, null,<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        excludeOfflinedSplitParents);<a name="line.431"></a>
 <span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>  }<a name="line.433"></a>
+<span class="sourceLineNo">433</span>    return getListOfRegionInfos(result);<a name="line.433"></a>
 <span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>  /**<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * Gets all of the regions of the specified table. Do not use this method<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * to get meta table regions, use methods in MetaTableLocator instead.<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * @param connection connection we're using<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   * @param tableName table we're looking for<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   * @return Ordered list of {@link RegionInfo}.<a name="line.440"></a>
-<span class="sourceLineNo">441</span>   */<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  public static List&lt;RegionInfo&gt; getTableRegions(Connection connection, TableName tableName)<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  throws IOException {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    return getTableRegions(connection, tableName, false);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>  /**<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * Gets all of the regions of the specified table. Do not use this method<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   * to get meta table regions, use methods in MetaTableLocator instead.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * @param connection connection we're using<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * @param tableName table we're looking for<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * @param excludeOfflinedSplitParents If true, do not include offlined split<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * parents in the return.<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * @return Ordered list of {@link RegionInfo}.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   */<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  public static List&lt;RegionInfo&gt; getTableRegions(Connection connection, TableName tableName,<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      final boolean excludeOfflinedSplitParents) throws IOException {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result =<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      getTableRegionsAndLocations(connection, tableName, excludeOfflinedSplitParents);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    return getListOfRegionInfos(result);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>  }<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>  private static List&lt;RegionInfo&gt; getListOfRegionInfos(<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      final List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; pairs) {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    if (pairs == null || pairs.isEmpty()) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      return Collections.emptyList();<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    List&lt;RegionInfo&gt; result = new ArrayList&lt;&gt;(pairs.size());<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    for (Pair&lt;RegionInfo, ServerName&gt; pair : pairs) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      result.add(pair.getFirst());<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return result;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * @param tableName table we're working with<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @return start row for scanning META according to query type<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  public static byte[] getTableStartRowForMeta(TableName tableName, QueryType type) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    if (tableName == null) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      return null;<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    }<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    switch (type) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    case REGION:<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      byte[] startRow = new byte[tableName.getName().length + 2];<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      System.arraycopy(tableName.getName(), 0, startRow, 0, tableName.getName().length);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      startRow[startRow.length - 2] = HConstants.DELIMITER;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      startRow[startRow.length - 1] = HConstants.DELIMITER;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      return startRow;<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    case ALL:<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    case TABLE:<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    default:<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      return tableName.getName();<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  }<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>  /**<a name="line.497"></a>
-<span class="sourceLineNo">498</span>   * @param tableName table we're working with<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * @return stop row for scanning META according to query type<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   */<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  public static byte[] getTableStopRowForMeta(TableName tableName, QueryType type) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    if (tableName == null) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      return null;<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    }<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    final byte[] stopRow;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    switch (type) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    case REGION:<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      stopRow = new byte[tableName.getName().length + 3];<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      System.arraycopy(tableName.getName(), 0, stopRow, 0, tableName.getName().length);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      stopRow[stopRow.length - 3] = ' ';<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      stopRow[stopRow.length - 2] = HConstants.DELIMITER;<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      stopRow[stopRow.length - 1] = HConstants.DELIMITER;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      break;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    case ALL:<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    case TABLE:<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    default:<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      stopRow = new byte[tableName.getName().length + 1];<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      System.arraycopy(tableName.getName(), 0, stopRow, 0, tableName.getName().length);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      stopRow[stopRow.length - 1] = ' ';<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      break;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    }<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    return stopRow;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>  /**<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * This method creates a Scan object that will only scan catalog rows that<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * belong to the specified table. It doesn't specify any columns.<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   * This is a better alternative to just using a start row and scan until<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * it hits a new table since that requires parsing the HRI to get the table<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * name.<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * @param tableName bytes of table's name<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * @return configured Scan object<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   */<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  @Deprecated<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  public static Scan getScanForTableName(Connection connection, TableName tableName) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    // Start key is just the table name with delimiters<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    byte[] startKey = getTableStartRowForMeta(tableName, QueryType.REGION);<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    // Stop key appends the smallest possible char to the table name<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    byte[] stopKey = getTableStopRowForMeta(tableName, QueryType.REGION);<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>    Scan scan = getMetaScan(connection, -1);<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    scan.setStartRow(startKey);<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    scan.setStopRow(stopKey);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    return scan;<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>  private static Scan getMetaScan(Connection connection, int rowUpperLimit) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    Scan scan = new Scan();<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    int scannerCaching = connection.getConfiguration()<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        .getInt(HConstants.HBASE_META_SCANNER_CACHING,<a name="line.550"></a>
-<span class="sourceLineNo">551</span>            HConstants.DEFAULT_HBASE_META_SCANNER_CACHING);<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    if (connection.getConfiguration().getBoolean(HConstants.USE_META_REPLICAS,<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        HConstants.DEFAULT_USE_META_REPLICAS)) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      scan.setConsistency(Consistency.TIMELINE);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    if (rowUpperLimit &gt; 0) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      scan.setLimit(rowUpperLimit);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      scan.setReadType(Scan.ReadType.PREAD);<a name="line.558"></a>
-<span class="sourceLineNo">559<

<TRUNCATED>

[06/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.html b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.html
index 6007f27..4ce6735 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.html
@@ -65,716 +65,716 @@
 <span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Table;<a name="line.57"></a>
 <span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.58"></a>
 <span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsResponse;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.slf4j.Logger;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.slf4j.LoggerFactory;<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.79"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsResponse;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.slf4j.Logger;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.slf4j.LoggerFactory;<a name="line.79"></a>
 <span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>/**<a name="line.81"></a>
-<span class="sourceLineNo">082</span> * &lt;p&gt;<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * Read/write operations on region and assignment information store in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * &lt;/p&gt;<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * &lt;p&gt;<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * Some of the methods of this class take ZooKeeperWatcher as a param. The only reason for this is<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * because when used on client-side (like from HBaseAdmin), we want to use short-living connection<a name="line.87"></a>
-<span class="sourceLineNo">088</span> * (opened before each operation, closed right after), while when used on HM or HRS (like in<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * AssignmentManager) we want permanent connection.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * &lt;/p&gt;<a name="line.90"></a>
-<span class="sourceLineNo">091</span> * &lt;p&gt;<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * HBASE-10070 adds a replicaId to HRI, meaning more than one HRI can be defined for the same table<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * range (table, startKey, endKey). For every range, there will be at least one HRI defined which is<a name="line.93"></a>
-<span class="sourceLineNo">094</span> * called default replica.<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * &lt;/p&gt;<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * &lt;p&gt;<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * Meta layout (as of 0.98 + HBASE-10070) is like:<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * &lt;pre&gt;<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * For each table there is single row in column family 'table' formatted:<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * &amp;lt;tableName&amp;gt; including namespace and columns are:<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * table: state             =&gt; contains table state<a name="line.102"></a>
-<span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * For each table range, there is a single row, formatted like:<a name="line.104"></a>
-<span class="sourceLineNo">105</span> * &amp;lt;tableName&amp;gt;,&amp;lt;startKey&amp;gt;,&amp;lt;regionId&amp;gt;,&amp;lt;encodedRegionName&amp;gt;.<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * This row corresponds to the regionName of the default region replica.<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Columns are:<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * info:regioninfo         =&gt; contains serialized HRI for the default region replica<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * info:server             =&gt; contains hostname:port (in string form) for the server hosting<a name="line.109"></a>
-<span class="sourceLineNo">110</span> *                            the default regionInfo replica<a name="line.110"></a>
-<span class="sourceLineNo">111</span> * info:server_&amp;lt;replicaId&amp;gt =&gt; contains hostname:port (in string form) for the server hosting<a name="line.111"></a>
-<span class="sourceLineNo">112</span> *                                 the regionInfo replica with replicaId<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * info:serverstartcode    =&gt; contains server start code (in binary long form) for the server<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *                            hosting the default regionInfo replica<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * info:serverstartcode_&amp;lt;replicaId&amp;gt =&gt; contains server start code (in binary long form) for<a name="line.115"></a>
-<span class="sourceLineNo">116</span> *                                          the server hosting the regionInfo replica with<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *                                          replicaId<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * info:seqnumDuringOpen   =&gt; contains seqNum (in binary long form) for the region at the time<a name="line.118"></a>
-<span class="sourceLineNo">119</span> *                             the server opened the region with default replicaId<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * info:seqnumDuringOpen_&amp;lt;replicaId&amp;gt =&gt; contains seqNum (in binary long form) for the region<a name="line.120"></a>
-<span class="sourceLineNo">121</span> *                                           at the time the server opened the region with<a name="line.121"></a>
-<span class="sourceLineNo">122</span> *                                           replicaId<a name="line.122"></a>
-<span class="sourceLineNo">123</span> * info:splitA             =&gt; contains a serialized HRI for the first daughter region if the<a name="line.123"></a>
-<span class="sourceLineNo">124</span> *                             region is split<a name="line.124"></a>
-<span class="sourceLineNo">125</span> * info:splitB             =&gt; contains a serialized HRI for the second daughter region if the<a name="line.125"></a>
+<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>/**<a name="line.83"></a>
+<span class="sourceLineNo">084</span> * &lt;p&gt;<a name="line.84"></a>
+<span class="sourceLineNo">085</span> * Read/write operations on region and assignment information store in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * &lt;/p&gt;<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * &lt;p&gt;<a name="line.87"></a>
+<span class="sourceLineNo">088</span> * Some of the methods of this class take ZooKeeperWatcher as a param. The only reason for this is<a name="line.88"></a>
+<span class="sourceLineNo">089</span> * because when used on client-side (like from HBaseAdmin), we want to use short-living connection<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * (opened before each operation, closed right after), while when used on HM or HRS (like in<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * AssignmentManager) we want permanent connection.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * &lt;/p&gt;<a name="line.92"></a>
+<span class="sourceLineNo">093</span> * &lt;p&gt;<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * HBASE-10070 adds a replicaId to HRI, meaning more than one HRI can be defined for the same table<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * range (table, startKey, endKey). For every range, there will be at least one HRI defined which is<a name="line.95"></a>
+<span class="sourceLineNo">096</span> * called default replica.<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * &lt;/p&gt;<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * &lt;p&gt;<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * Meta layout (as of 0.98 + HBASE-10070) is like:<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * &lt;pre&gt;<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * For each table there is single row in column family 'table' formatted:<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * &amp;lt;tableName&amp;gt; including namespace and columns are:<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * table: state             =&gt; contains table state<a name="line.104"></a>
+<span class="sourceLineNo">105</span> *<a name="line.105"></a>
+<span class="sourceLineNo">106</span> * For each table range, there is a single row, formatted like:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * &amp;lt;tableName&amp;gt;,&amp;lt;startKey&amp;gt;,&amp;lt;regionId&amp;gt;,&amp;lt;encodedRegionName&amp;gt;.<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * This row corresponds to the regionName of the default region replica.<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * Columns are:<a name="line.109"></a>
+<span class="sourceLineNo">110</span> * info:regioninfo         =&gt; contains serialized HRI for the default region replica<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * info:server             =&gt; contains hostname:port (in string form) for the server hosting<a name="line.111"></a>
+<span class="sourceLineNo">112</span> *                            the default regionInfo replica<a name="line.112"></a>
+<span class="sourceLineNo">113</span> * info:server_&amp;lt;replicaId&amp;gt =&gt; contains hostname:port (in string form) for the server hosting<a name="line.113"></a>
+<span class="sourceLineNo">114</span> *                                 the regionInfo replica with replicaId<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * info:serverstartcode    =&gt; contains server start code (in binary long form) for the server<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *                            hosting the default regionInfo replica<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * info:serverstartcode_&amp;lt;replicaId&amp;gt =&gt; contains server start code (in binary long form) for<a name="line.117"></a>
+<span class="sourceLineNo">118</span> *                                          the server hosting the regionInfo replica with<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *                                          replicaId<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * info:seqnumDuringOpen   =&gt; contains seqNum (in binary long form) for the region at the time<a name="line.120"></a>
+<span class="sourceLineNo">121</span> *                             the server opened the region with default replicaId<a name="line.121"></a>
+<span class="sourceLineNo">122</span> * info:seqnumDuringOpen_&amp;lt;replicaId&amp;gt =&gt; contains seqNum (in binary long form) for the region<a name="line.122"></a>
+<span class="sourceLineNo">123</span> *                                           at the time the server opened the region with<a name="line.123"></a>
+<span class="sourceLineNo">124</span> *                                           replicaId<a name="line.124"></a>
+<span class="sourceLineNo">125</span> * info:splitA             =&gt; contains a serialized HRI for the first daughter region if the<a name="line.125"></a>
 <span class="sourceLineNo">126</span> *                             region is split<a name="line.126"></a>
-<span class="sourceLineNo">127</span> * info:mergeA             =&gt; contains a serialized HRI for the first parent region if the<a name="line.127"></a>
-<span class="sourceLineNo">128</span> *                             region is the result of a merge<a name="line.128"></a>
-<span class="sourceLineNo">129</span> * info:mergeB             =&gt; contains a serialized HRI for the second parent region if the<a name="line.129"></a>
+<span class="sourceLineNo">127</span> * info:splitB             =&gt; contains a serialized HRI for the second daughter region if the<a name="line.127"></a>
+<span class="sourceLineNo">128</span> *                             region is split<a name="line.128"></a>
+<span class="sourceLineNo">129</span> * info:mergeA             =&gt; contains a serialized HRI for the first parent region if the<a name="line.129"></a>
 <span class="sourceLineNo">130</span> *                             region is the result of a merge<a name="line.130"></a>
-<span class="sourceLineNo">131</span> * &lt;/pre&gt;<a name="line.131"></a>
-<span class="sourceLineNo">132</span> * &lt;/p&gt;<a name="line.132"></a>
-<span class="sourceLineNo">133</span> * &lt;p&gt;<a name="line.133"></a>
-<span class="sourceLineNo">134</span> * The actual layout of meta should be encapsulated inside MetaTableAccessor methods, and should not<a name="line.134"></a>
-<span class="sourceLineNo">135</span> * leak out of it (through Result objects, etc)<a name="line.135"></a>
-<span class="sourceLineNo">136</span> * &lt;/p&gt;<a name="line.136"></a>
-<span class="sourceLineNo">137</span> */<a name="line.137"></a>
-<span class="sourceLineNo">138</span>@InterfaceAudience.Private<a name="line.138"></a>
-<span class="sourceLineNo">139</span>public class MetaTableAccessor {<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static final Logger LOG = LoggerFactory.getLogger(MetaTableAccessor.class);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static final Logger METALOG = LoggerFactory.getLogger("org.apache.hadoop.hbase.META");<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static final byte[] META_REGION_PREFIX;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  static {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    // Copy the prefix from FIRST_META_REGIONINFO into META_REGION_PREFIX.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    // FIRST_META_REGIONINFO == 'hbase:meta,,1'.  META_REGION_PREFIX == 'hbase:meta,'<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    int len = RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName().length - 2;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    META_REGION_PREFIX = new byte [len];<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    System.arraycopy(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName(), 0,<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      META_REGION_PREFIX, 0, len);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>  @VisibleForTesting<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  public static final byte[] REPLICATION_PARENT_QUALIFIER = Bytes.toBytes("parent");<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  private static final byte ESCAPE_BYTE = (byte) 0xFF;<a name="line.157"></a>
+<span class="sourceLineNo">131</span> * info:mergeB             =&gt; contains a serialized HRI for the second parent region if the<a name="line.131"></a>
+<span class="sourceLineNo">132</span> *                             region is the result of a merge<a name="line.132"></a>
+<span class="sourceLineNo">133</span> * &lt;/pre&gt;<a name="line.133"></a>
+<span class="sourceLineNo">134</span> * &lt;/p&gt;<a name="line.134"></a>
+<span class="sourceLineNo">135</span> * &lt;p&gt;<a name="line.135"></a>
+<span class="sourceLineNo">136</span> * The actual layout of meta should be encapsulated inside MetaTableAccessor methods, and should not<a name="line.136"></a>
+<span class="sourceLineNo">137</span> * leak out of it (through Result objects, etc)<a name="line.137"></a>
+<span class="sourceLineNo">138</span> * &lt;/p&gt;<a name="line.138"></a>
+<span class="sourceLineNo">139</span> */<a name="line.139"></a>
+<span class="sourceLineNo">140</span>@InterfaceAudience.Private<a name="line.140"></a>
+<span class="sourceLineNo">141</span>public class MetaTableAccessor {<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static final Logger LOG = LoggerFactory.getLogger(MetaTableAccessor.class);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static final Logger METALOG = LoggerFactory.getLogger("org.apache.hadoop.hbase.META");<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static final byte[] META_REGION_PREFIX;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  static {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    // Copy the prefix from FIRST_META_REGIONINFO into META_REGION_PREFIX.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    // FIRST_META_REGIONINFO == 'hbase:meta,,1'.  META_REGION_PREFIX == 'hbase:meta,'<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    int len = RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName().length - 2;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    META_REGION_PREFIX = new byte [len];<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    System.arraycopy(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName(), 0,<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      META_REGION_PREFIX, 0, len);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  }<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span>  @VisibleForTesting<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  public static final byte[] REPLICATION_PARENT_QUALIFIER = Bytes.toBytes("parent");<a name="line.157"></a>
 <span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  private static final byte SEPARATED_BYTE = 0x00;<a name="line.159"></a>
+<span class="sourceLineNo">159</span>  private static final byte ESCAPE_BYTE = (byte) 0xFF;<a name="line.159"></a>
 <span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  /**<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * Lists all of the table regions currently in META.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * Deprecated, keep there until some test use this.<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * @param connection what we will use<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * @param tableName table to list<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @return Map of all user-space regions to servers<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * @deprecated use {@link #getTableRegionsAndLocations}, region can have multiple locations<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   */<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  @Deprecated<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  public static NavigableMap&lt;RegionInfo, ServerName&gt; allTableRegions(<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      Connection connection, final TableName tableName) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    final NavigableMap&lt;RegionInfo, ServerName&gt; regions = new TreeMap&lt;&gt;();<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    Visitor visitor = new TableVisitorBase(tableName) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      public boolean visitInternal(Result result) throws IOException {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        RegionLocations locations = getRegionLocations(result);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>        if (locations == null) return true;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        for (HRegionLocation loc : locations.getRegionLocations()) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          if (loc != null) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>            RegionInfo regionInfo = loc.getRegionInfo();<a name="line.180"></a>
-<span class="sourceLineNo">181</span>            regions.put(regionInfo, loc.getServerName());<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>        return true;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    };<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    scanMetaForTableRegions(connection, visitor, tableName);<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    return regions;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>  @InterfaceAudience.Private<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  public enum QueryType {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    ALL(HConstants.TABLE_FAMILY, HConstants.CATALOG_FAMILY),<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    REGION(HConstants.CATALOG_FAMILY),<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    TABLE(HConstants.TABLE_FAMILY),<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    REPLICATION(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>    private final byte[][] families;<a name="line.198"></a>
+<span class="sourceLineNo">161</span>  private static final byte SEPARATED_BYTE = 0x00;<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  /**<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   * Lists all of the table regions currently in META.<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * Deprecated, keep there until some test use this.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * @param connection what we will use<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * @param tableName table to list<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * @return Map of all user-space regions to servers<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * @deprecated use {@link #getTableRegionsAndLocations}, region can have multiple locations<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  @Deprecated<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public static NavigableMap&lt;RegionInfo, ServerName&gt; allTableRegions(<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      Connection connection, final TableName tableName) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    final NavigableMap&lt;RegionInfo, ServerName&gt; regions = new TreeMap&lt;&gt;();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    Visitor visitor = new TableVisitorBase(tableName) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      @Override<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      public boolean visitInternal(Result result) throws IOException {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        RegionLocations locations = getRegionLocations(result);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        if (locations == null) return true;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        for (HRegionLocation loc : locations.getRegionLocations()) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          if (loc != null) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            RegionInfo regionInfo = loc.getRegionInfo();<a name="line.182"></a>
+<span class="sourceLineNo">183</span>            regions.put(regionInfo, loc.getServerName());<a name="line.183"></a>
+<span class="sourceLineNo">184</span>          }<a name="line.184"></a>
+<span class="sourceLineNo">185</span>        }<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        return true;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    };<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    scanMetaForTableRegions(connection, visitor, tableName);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    return regions;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  @InterfaceAudience.Private<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  public enum QueryType {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    ALL(HConstants.TABLE_FAMILY, HConstants.CATALOG_FAMILY),<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    REGION(HConstants.CATALOG_FAMILY),<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    TABLE(HConstants.TABLE_FAMILY),<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    REPLICATION(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.198"></a>
 <span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>    QueryType(byte[]... families) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      this.families = families;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span>    byte[][] getFamilies() {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return this.families;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private static final Pattern SERVER_COLUMN_PATTERN<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    = Pattern.compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  ////////////////////////<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  // Reading operations //<a name="line.217"></a>
+<span class="sourceLineNo">200</span>    private final byte[][] families;<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    QueryType(byte[]... families) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      this.families = families;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>    byte[][] getFamilies() {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      return this.families;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    }<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  private static final Pattern SERVER_COLUMN_PATTERN<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    = Pattern.compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
 <span class="sourceLineNo">218</span>  ////////////////////////<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>  /**<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   * @param connection connection we're using<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * @param visitor Visitor invoked against each row in regions family.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  public static void fullScanRegions(Connection connection,<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      final Visitor visitor)<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      throws IOException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    scanMeta(connection, null, null, QueryType.REGION, visitor);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  /**<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   * @param connection connection we're using<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public static List&lt;Result&gt; fullScanRegions(Connection connection)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      throws IOException {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    return fullScan(connection, QueryType.REGION);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  /**<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for tables.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   * @param connection connection we're using<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * @param visitor Visitor invoked against each row in tables family.<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  public static void fullScanTables(Connection connection,<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      final Visitor visitor)<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      throws IOException {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    scanMeta(connection, null, null, QueryType.TABLE, visitor);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>  /**<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   * @param connection connection we're using<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   * @param type scanned part of meta<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * @return List of {@link Result}<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  public static List&lt;Result&gt; fullScan(Connection connection, QueryType type)<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    throws IOException {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    CollectAllVisitor v = new CollectAllVisitor();<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    scanMeta(connection, null, null, type, v);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return v.getResults();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>  /**<a name="line.264"></a>
-<span class="sourceLineNo">265</span>   * Callers should call close on the returned {@link Table} instance.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>   * @param connection connection we're using to access Meta<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   * @return An {@link Table} for &lt;code&gt;hbase:meta&lt;/code&gt;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   */<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  public static Table getMetaHTable(final Connection connection)<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  throws IOException {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // We used to pass whole CatalogTracker in here, now we just pass in Connection<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    if (connection == null) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      throw new NullPointerException("No connection");<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    } else if (connection.isClosed()) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      throw new IOException("connection is closed");<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return connection.getTable(TableName.META_TABLE_NAME);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>  /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * @param t Table to use (will be closed when done).<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   * @param g Get to run<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   */<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  private static Result get(final Table t, final Get g) throws IOException {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    if (t == null) return null;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    try {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      return t.get(g);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    } finally {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      t.close();<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    }<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  /**<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * Gets the region info and assignment for the specified region.<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @param connection connection we're using<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * @param regionName Region to lookup.<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   * @return Location and RegionInfo for &lt;code&gt;regionName&lt;/code&gt;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>   * @deprecated use {@link #getRegionLocation(Connection, byte[])} instead<a name="line.298"></a>
-<span class="sourceLineNo">299</span>   */<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  @Deprecated<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  public static Pair&lt;RegionInfo, ServerName&gt; getRegion(Connection connection, byte [] regionName)<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    throws IOException {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    HRegionLocation location = getRegionLocation(connection, regionName);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    return location == null<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      ? null<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      : new Pair&lt;&gt;(location.getRegionInfo(), location.getServerName());<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  /**<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * Returns the HRegionLocation from meta for the given region<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * @param connection connection we're using<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * @param regionName region we're looking for<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * @return HRegionLocation for the given region<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public static HRegionLocation getRegionLocation(Connection connection, byte[] regionName)<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      throws IOException {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    byte[] row = regionName;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    RegionInfo parsedInfo = null;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    try {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      parsedInfo = parseRegionInfoFromRegionName(regionName);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      row = getMetaKeyForRegion(parsedInfo);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    } catch (Exception parseEx) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      // Ignore. This is used with tableName passed as regionName.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    Get get = new Get(row);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    Result r = get(getMetaHTable(connection), get);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    RegionLocations locations = getRegionLocations(r);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    return locations == null ? null<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      : locations.getRegionLocation(parsedInfo == null ? 0 : parsedInfo.getReplicaId());<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  /**<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * Returns the HRegionLocation from meta for the given region<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * @param connection connection we're using<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   * @param regionInfo region information<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * @return HRegionLocation for the given region<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   */<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static HRegionLocation getRegionLocation(Connection connection, RegionInfo regionInfo)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      throws IOException {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    byte[] row = getMetaKeyForRegion(regionInfo);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    Get get = new Get(row);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    Result r = get(getMetaHTable(connection), get);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    return getRegionLocation(r, regionInfo, regionInfo.getReplicaId());<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>  /** Returns the row key to use for this regionInfo */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public static byte[] getMetaKeyForRegion(RegionInfo regionInfo) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    return RegionReplicaUtil.getRegionInfoForDefaultReplica(regionInfo).getRegionName();<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /** Returns an HRI parsed from this regionName. Not all the fields of the HRI<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * is stored in the name, so the returned object should only be used for the fields<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * in the regionName.<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  public static RegionInfo parseRegionInfoFromRegionName(byte[] regionName) throws IOException {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    byte[][] fields = RegionInfo.parseRegionName(regionName);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    long regionId = Long.parseLong(Bytes.toString(fields[2]));<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    int replicaId = fields.length &gt; 3 ? Integer.parseInt(Bytes.toString(fields[3]), 16) : 0;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    return RegionInfoBuilder.newBuilder(TableName.valueOf(fields[0]))<a name="line.361"></a>
-<span class="sourceLineNo">362</span>              .setStartKey(fields[1])<a name="line.362"></a>
-<span class="sourceLineNo">363</span>              .setEndKey(fields[2])<a name="line.363"></a>
-<span class="sourceLineNo">364</span>              .setSplit(false)<a name="line.364"></a>
-<span class="sourceLineNo">365</span>              .setRegionId(regionId)<a name="line.365"></a>
-<span class="sourceLineNo">366</span>              .setReplicaId(replicaId)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>              .build();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * Gets the result in hbase:meta for the specified region.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * @param connection connection we're using<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * @param regionName region we're looking for<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * @return result of the specified region<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   */<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  public static Result getRegionResult(Connection connection,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      byte[] regionName) throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    Get get = new Get(regionName);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    return get(getMetaHTable(connection), get);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span>  /**<a name="line.383"></a>
-<span class="sourceLineNo">384</span>   * Get regions from the merge qualifier of the specified merged region<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * @return null if it doesn't contain merge qualifier, else two merge regions<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   */<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Nullable<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public static Pair&lt;RegionInfo, RegionInfo&gt; getRegionsFromMergeQualifier(<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      Connection connection, byte[] regionName) throws IOException {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    Result result = getRegionResult(connection, regionName);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    RegionInfo mergeA = getRegionInfo(result, HConstants.MERGEA_QUALIFIER);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    RegionInfo mergeB = getRegionInfo(result, HConstants.MERGEB_QUALIFIER);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    if (mergeA == null &amp;&amp; mergeB == null) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      return null;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    return new Pair&lt;&gt;(mergeA, mergeB);<a name="line.396"></a>
-<span class="sourceLineNo">397</span> }<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  /**<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * Checks if the specified table exists.  Looks at the hbase:meta table hosted on<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * the specified server.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param connection connection we're using<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param tableName table to check<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @return true if the table exists in meta, false if not<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  public static boolean tableExists(Connection connection,<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      final TableName tableName)<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  throws IOException {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    // Catalog tables always exist.<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return tableName.equals(TableName.META_TABLE_NAME)<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        || getTableState(connection, tableName) != null;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  /**<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * Lists all of the regions currently in META.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   *<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param connection to connect with<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param excludeOfflinedSplitParents False if we are to include offlined/splitparents regions,<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   *                                    true and we'll leave out offlined regions from returned list<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * @return List of all user-space regions.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   */<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  @VisibleForTesting<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  public static List&lt;RegionInfo&gt; getAllRegions(Connection connection,<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      boolean excludeOfflinedSplitParents)<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      throws IOException {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result;<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>    result = getTableRegionsAndLocations(connection, null,<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        excludeOfflinedSplitParents);<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>    return getListOfRegionInfos(result);<a name="line.431"></a>
+<span class="sourceLineNo">219</span>  // Reading operations //<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  ////////////////////////<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>  /**<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * @param connection connection we're using<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * @param visitor Visitor invoked against each row in regions family.<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   */<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public static void fullScanRegions(Connection connection,<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      final Visitor visitor)<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      throws IOException {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    scanMeta(connection, null, null, QueryType.REGION, visitor);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>  }<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>  /**<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @param connection connection we're using<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  public static List&lt;Result&gt; fullScanRegions(Connection connection)<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      throws IOException {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return fullScan(connection, QueryType.REGION);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  /**<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for tables.<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * @param connection connection we're using<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * @param visitor Visitor invoked against each row in tables family.<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   */<a name="line.246"></a>
+<span class="sourceLineNo">247</span>  public static void fullScanTables(Connection connection,<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      final Visitor visitor)<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    scanMeta(connection, null, null, QueryType.TABLE, visitor);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  }<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>  /**<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * @param connection connection we're using<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   * @param type scanned part of meta<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   * @return List of {@link Result}<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  public static List&lt;Result&gt; fullScan(Connection connection, QueryType type)<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    throws IOException {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    CollectAllVisitor v = new CollectAllVisitor();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    scanMeta(connection, null, null, type, v);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    return v.getResults();<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  }<a name="line.264"></a>
+<span class="sourceLineNo">265</span><a name="line.265"></a>
+<span class="sourceLineNo">266</span>  /**<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   * Callers should call close on the returned {@link Table} instance.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   * @param connection connection we're using to access Meta<a name="line.268"></a>
+<span class="sourceLineNo">269</span>   * @return An {@link Table} for &lt;code&gt;hbase:meta&lt;/code&gt;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>   */<a name="line.270"></a>
+<span class="sourceLineNo">271</span>  public static Table getMetaHTable(final Connection connection)<a name="line.271"></a>
+<span class="sourceLineNo">272</span>  throws IOException {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // We used to pass whole CatalogTracker in here, now we just pass in Connection<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    if (connection == null) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      throw new NullPointerException("No connection");<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    } else if (connection.isClosed()) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      throw new IOException("connection is closed");<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    return connection.getTable(TableName.META_TABLE_NAME);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>  /**<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * @param t Table to use (will be closed when done).<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   * @param g Get to run<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   */<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  private static Result get(final Table t, final Get g) throws IOException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    if (t == null) return null;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    try {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      return t.get(g);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    } finally {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      t.close();<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>  /**<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   * Gets the region info and assignment for the specified region.<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   * @param connection connection we're using<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * @param regionName Region to lookup.<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   * @return Location and RegionInfo for &lt;code&gt;regionName&lt;/code&gt;<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   * @deprecated use {@link #getRegionLocation(Connection, byte[])} instead<a name="line.300"></a>
+<span class="sourceLineNo">301</span>   */<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  @Deprecated<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  public static Pair&lt;RegionInfo, ServerName&gt; getRegion(Connection connection, byte [] regionName)<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    throws IOException {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    HRegionLocation location = getRegionLocation(connection, regionName);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    return location == null<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      ? null<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      : new Pair&lt;&gt;(location.getRegionInfo(), location.getServerName());<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>  /**<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   * Returns the HRegionLocation from meta for the given region<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * @param connection connection we're using<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   * @param regionName region we're looking for<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * @return HRegionLocation for the given region<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   */<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public static HRegionLocation getRegionLocation(Connection connection, byte[] regionName)<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      throws IOException {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    byte[] row = regionName;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    RegionInfo parsedInfo = null;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    try {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      parsedInfo = parseRegionInfoFromRegionName(regionName);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      row = getMetaKeyForRegion(parsedInfo);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    } catch (Exception parseEx) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      // Ignore. This is used with tableName passed as regionName.<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    Get get = new Get(row);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    Result r = get(getMetaHTable(connection), get);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    RegionLocations locations = getRegionLocations(r);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    return locations == null ? null<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      : locations.getRegionLocation(parsedInfo == null ? 0 : parsedInfo.getReplicaId());<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>  /**<a name="line.335"></a>
+<span class="sourceLineNo">336</span>   * Returns the HRegionLocation from meta for the given region<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * @param connection connection we're using<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * @param regionInfo region information<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * @return HRegionLocation for the given region<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   */<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  public static HRegionLocation getRegionLocation(Connection connection, RegionInfo regionInfo)<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      throws IOException {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    byte[] row = getMetaKeyForRegion(regionInfo);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    Get get = new Get(row);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    Result r = get(getMetaHTable(connection), get);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    return getRegionLocation(r, regionInfo, regionInfo.getReplicaId());<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  /** Returns the row key to use for this regionInfo */<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  public static byte[] getMetaKeyForRegion(RegionInfo regionInfo) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    return RegionReplicaUtil.getRegionInfoForDefaultReplica(regionInfo).getRegionName();<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  /** Returns an HRI parsed from this regionName. Not all the fields of the HRI<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * is stored in the name, so the returned object should only be used for the fields<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * in the regionName.<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   */<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  public static RegionInfo parseRegionInfoFromRegionName(byte[] regionName) throws IOException {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    byte[][] fields = RegionInfo.parseRegionName(regionName);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    long regionId = Long.parseLong(Bytes.toString(fields[2]));<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    int replicaId = fields.length &gt; 3 ? Integer.parseInt(Bytes.toString(fields[3]), 16) : 0;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    return RegionInfoBuilder.newBuilder(TableName.valueOf(fields[0]))<a name="line.363"></a>
+<span class="sourceLineNo">364</span>              .setStartKey(fields[1])<a name="line.364"></a>
+<span class="sourceLineNo">365</span>              .setEndKey(fields[2])<a name="line.365"></a>
+<span class="sourceLineNo">366</span>              .setSplit(false)<a name="line.366"></a>
+<span class="sourceLineNo">367</span>              .setRegionId(regionId)<a name="line.367"></a>
+<span class="sourceLineNo">368</span>              .setReplicaId(replicaId)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>              .build();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  /**<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * Gets the result in hbase:meta for the specified region.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * @param connection connection we're using<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param regionName region we're looking for<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @return result of the specified region<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   */<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  public static Result getRegionResult(Connection connection,<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      byte[] regionName) throws IOException {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    Get get = new Get(regionName);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return get(getMetaHTable(connection), get);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>  /**<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * Get regions from the merge qualifier of the specified merged region<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * @return null if it doesn't contain merge qualifier, else two merge regions<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  @Nullable<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  public static Pair&lt;RegionInfo, RegionInfo&gt; getRegionsFromMergeQualifier(<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      Connection connection, byte[] regionName) throws IOException {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    Result result = getRegionResult(connection, regionName);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    RegionInfo mergeA = getRegionInfo(result, HConstants.MERGEA_QUALIFIER);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    RegionInfo mergeB = getRegionInfo(result, HConstants.MERGEB_QUALIFIER);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    if (mergeA == null &amp;&amp; mergeB == null) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      return null;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    return new Pair&lt;&gt;(mergeA, mergeB);<a name="line.398"></a>
+<span class="sourceLineNo">399</span> }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>  /**<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   * Checks if the specified table exists.  Looks at the hbase:meta table hosted on<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   * the specified server.<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * @param connection connection we're using<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   * @param tableName table to check<a name="line.405"></a>
+<span class="sourceLineNo">406</span>   * @return true if the table exists in meta, false if not<a name="line.406"></a>
+<span class="sourceLineNo">407</span>   */<a name="line.407"></a>
+<span class="sourceLineNo">408</span>  public static boolean tableExists(Connection connection,<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      final TableName tableName)<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  throws IOException {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // Catalog tables always exist.<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    return tableName.equals(TableName.META_TABLE_NAME)<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        || getTableState(connection, tableName) != null;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  }<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>  /**<a name="line.416"></a>
+<span class="sourceLineNo">417</span>   * Lists all of the regions currently in META.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   *<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * @param connection to connect with<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   * @param excludeOfflinedSplitParents False if we are to include offlined/splitparents regions,<a name="line.420"></a>
+<span class="sourceLineNo">421</span>   *                                    true and we'll leave out offlined regions from returned list<a name="line.421"></a>
+<span class="sourceLineNo">422</span>   * @return List of all user-space regions.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>   */<a name="line.423"></a>
+<span class="sourceLineNo">424</span>  @VisibleForTesting<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  public static List&lt;RegionInfo&gt; getAllRegions(Connection connection,<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      boolean excludeOfflinedSplitParents)<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      throws IOException {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result;<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>    result = getTableRegionsAndLocations(connection, null,<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        excludeOfflinedSplitParents);<a name="line.431"></a>
 <span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>  }<a name="line.433"></a>
+<span class="sourceLineNo">433</span>    return getListOfRegionInfos(result);<a name="line.433"></a>
 <span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>  /**<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * Gets all of the regions of the specified table. Do not use this method<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * to get meta table regions, use methods in MetaTableLocator instead.<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * @param connection connection we're using<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   * @param tableName table we're looking for<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   * @return Ordered list of {@link RegionInfo}.<a name="line.440"></a>
-<span class="sourceLineNo">441</span>   */<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  public static List&lt;RegionInfo&gt; getTableRegions(Connection connection, TableName tableName)<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  throws IOException {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    return getTableRegions(connection, tableName, false);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>  /**<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * Gets all of the regions of the specified table. Do not use this method<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   * to get meta table regions, use methods in MetaTableLocator instead.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * @param connection connection we're using<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * @param tableName table we're looking for<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * @param excludeOfflinedSplitParents If true, do not include offlined split<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * parents in the return.<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * @return Ordered list of {@link RegionInfo}.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   */<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  public static List&lt;RegionInfo&gt; getTableRegions(Connection connection, TableName tableName,<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      final boolean excludeOfflinedSplitParents) throws IOException {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result =<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      getTableRegionsAndLocations(connection, tableName, excludeOfflinedSplitParents);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    return getListOfRegionInfos(result);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>  }<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>  private static List&lt;RegionInfo&gt; getListOfRegionInfos(<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      final List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; pairs) {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    if (pairs == null || pairs.isEmpty()) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      return Collections.emptyList();<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    List&lt;RegionInfo&gt; result = new ArrayList&lt;&gt;(pairs.size());<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    for (Pair&lt;RegionInfo, ServerName&gt; pair : pairs) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      result.add(pair.getFirst());<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return result;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * @param tableName table we're working with<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @return start row for scanning META according to query type<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  public static byte[] getTableStartRowForMeta(TableName tableName, QueryType type) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    if (tableName == null) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      return null;<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    }<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    switch (type) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    case REGION:<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      byte[] startRow = new byte[tableName.getName().length + 2];<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      System.arraycopy(tableName.getName(), 0, startRow, 0, tableName.getName().length);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      startRow[startRow.length - 2] = HConstants.DELIMITER;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      startRow[startRow.length - 1] = HConstants.DELIMITER;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      return startRow;<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    case ALL:<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    case TABLE:<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    default:<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      return tableName.getName();<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  }<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>  /**<a name="line.497"></a>
-<span class="sourceLineNo">498</span>   * @param tableName table we're working with<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * @return stop row for scanning META according to query type<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   */<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  public static byte[] getTableStopRowForMeta(TableName tableName, QueryType type) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    if (tableName == null) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      return null;<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    }<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    final byte[] stopRow;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    switch (type) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    case REGION:<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      stopRow = new byte[tableName.getName().length + 3];<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      System.arraycopy(tableName.getName(), 0, stopRow, 0, tableName.getName().length);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      stopRow[stopRow.length - 3] = ' ';<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      stopRow[stopRow.length - 2] = HConstants.DELIMITER;<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      stopRow[stopRow.length - 1] = HConstants.DELIMITER;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      break;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    case ALL:<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    case TABLE:<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    default:<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      stopRow = new byte[tableName.getName().length + 1];<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      System.arraycopy(tableName.getName(), 0, stopRow, 0, tableName.getName().length);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      stopRow[stopRow.length - 1] = ' ';<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      break;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    }<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    return stopRow;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>  /**<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * This method creates a Scan object that will only scan catalog rows that<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * belong to the specified table. It doesn't specify any columns.<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   * This is a better alternative to just using a start row and scan until<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * it hits a new table since that requires parsing the HRI to get the table<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * name.<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * @param tableName bytes of table's name<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * @return configured Scan object<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   */<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  @Deprecated<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  public static Scan getScanForTableName(Connection connection, TableName tableName) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    // Start key is just the table name with delimiters<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    byte[] startKey = getTableStartRowForMeta(tableName, QueryType.REGION);<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    // Stop key appends the smallest possible char to the table name<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    byte[] stopKey = getTableStopRowForMeta(tableName, QueryType.REGION);<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>    Scan scan = getMetaScan(connection, -1);<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    scan.setStartRow(startKey);<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    scan.setStopRow(stopKey);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    return scan;<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>  private static Scan getMetaScan(Connection connection, int rowUpperLimit) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    Scan scan = new Scan();<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    int scannerCaching = connection.getConfiguration()<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        .getInt(HConstants.HBASE_META_SCANNER_CACHING,<a name="line.550"></a>
-<span class="sourceLineNo">551</span>            HConstants.DEFAULT_HBASE_META_SCANNER_CACHING);<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    if (connection.getConfiguration().getBoolean(HConstants.USE_META_REPLICAS,<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        HConstants.DEFAULT_USE_META_REPLICAS)) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      scan.setConsistency(Consistency.TIMELINE);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    if (rowUpperLimit &gt; 0) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      scan.setLimit(rowUpperLimit);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      scan.setReadType(Scan.ReadType.PREAD);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    }<a name="line.559"></a>
-<span class="sourceLineNo">560</span>    scan.setCaching(sc

<TRUNCATED>

[23/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 671bf2c..d012532 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,10 +271,10 @@
 <th><img src="images/icon_warning_sml.gif" alt="" />&#160;Warnings</th>
 <th><img src="images/icon_error_sml.gif" alt="" />&#160;Errors</th></tr>
 <tr class="b">
-<td>3599</td>
+<td>3600</td>
 <td>0</td>
 <td>0</td>
-<td>15917</td></tr></table></div>
+<td>15914</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -572,7 +572,7 @@
 <td><a href="#org.apache.hadoop.hbase.MetaTableAccessor.java">org/apache/hadoop/hbase/MetaTableAccessor.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>65</td></tr>
+<td>63</td></tr>
 <tr class="b">
 <td><a href="#org.apache.hadoop.hbase.MiniHBaseCluster.java">org/apache/hadoop/hbase/MiniHBaseCluster.java</a></td>
 <td>0</td>
@@ -1802,7 +1802,7 @@
 <td><a href="#org.apache.hadoop.hbase.client.TestEnableTable.java">org/apache/hadoop/hbase/client/TestEnableTable.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>3</td></tr>
+<td>2</td></tr>
 <tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestFastFail.java">org/apache/hadoop/hbase/client/TestFastFail.java</a></td>
 <td>0</td>
@@ -10312,12 +10312,12 @@
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#JavadocTagContinuationIndentation">JavadocTagContinuationIndentation</a>
 <ul>
 <li>offset: <tt>&quot;2&quot;</tt></li></ul></td>
-<td>784</td>
+<td>798</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#NonEmptyAtclauseDescription">NonEmptyAtclauseDescription</a></td>
-<td>3849</td>
+<td>3833</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td>misc</td>
@@ -10335,7 +10335,7 @@
 <ul>
 <li>max: <tt>&quot;100&quot;</tt></li>
 <li>ignorePattern: <tt>&quot;^package.*|^import.*|a href|href|http://|https://|ftp://|org.apache.thrift.|com.google.protobuf.|hbase.protobuf.generated&quot;</tt></li></ul></td>
-<td>1620</td>
+<td>1619</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td></td>
@@ -14526,7 +14526,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 26 has parse error. Missed HTML close tag 'arg'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>44</td></tr></table></div>
 <div class="section">
@@ -15162,7 +15162,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 4 has parse error. Missed HTML close tag 'pre'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>59</td></tr></table></div>
 <div class="section">
@@ -16370,48 +16370,36 @@
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
-<td>138</td></tr>
+<td>140</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>177</td></tr>
+<td>179</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>285</td></tr>
+<td>287</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' have incorrect indentation level 1, expected level should be 2.</td>
-<td>397</td></tr>
+<td>399</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>453</td></tr>
+<td>455</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child have incorrect indentation level 4, expected level should be 6.</td>
-<td>484</td></tr>
-<tr class="b">
-<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
-<td>indentation</td>
-<td>Indentation</td>
-<td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
-<td>485</td></tr>
-<tr class="a">
-<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
-<td>indentation</td>
-<td>Indentation</td>
-<td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>486</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
@@ -16435,13 +16423,13 @@
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
-<td>'case' child have incorrect indentation level 4, expected level should be 6.</td>
+<td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>490</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
-<td>'case' child have incorrect indentation level 4, expected level should be 6.</td>
+<td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>491</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
@@ -16453,25 +16441,25 @@
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
-<td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
+<td>'case' child have incorrect indentation level 4, expected level should be 6.</td>
 <td>493</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child have incorrect indentation level 4, expected level should be 6.</td>
-<td>507</td></tr>
+<td>494</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
-<td>508</td></tr>
+<td>495</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
-<td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
+<td>'case' child have incorrect indentation level 4, expected level should be 6.</td>
 <td>509</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
@@ -16501,13 +16489,13 @@
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
-<td>'case' child have incorrect indentation level 4, expected level should be 6.</td>
+<td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>514</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
-<td>'case' child have incorrect indentation level 4, expected level should be 6.</td>
+<td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>515</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
@@ -16519,13 +16507,13 @@
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
-<td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
+<td>'case' child have incorrect indentation level 4, expected level should be 6.</td>
 <td>517</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
-<td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
+<td>'case' child have incorrect indentation level 4, expected level should be 6.</td>
 <td>518</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
@@ -16541,82 +16529,82 @@
 <td>520</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
+<td>indentation</td>
+<td>Indentation</td>
+<td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
+<td>521</td></tr>
+<tr class="b">
+<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
+<td>indentation</td>
+<td>Indentation</td>
+<td>'block' child have incorrect indentation level 6, expected level should be 8.</td>
+<td>522</td></tr>
+<tr class="a">
+<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
-<td>534</td></tr>
+<td>536</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>568</td></tr>
+<td>570</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>582</td></tr>
+<td>584</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>604</td></tr>
+<td>606</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>632</td></tr>
+<td>634</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>633</td></tr>
+<td>635</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'getServerUserRegions' have incorrect indentation level 2, expected level should be 4.</td>
-<td>636</td></tr>
+<td>638</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>644</td></tr>
+<td>646</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>646</td></tr>
+<td>648</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>665</td></tr>
+<td>667</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>672</td></tr>
-<tr class="b">
-<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
-<td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
-<td>At-clause should have a non-empty description.</td>
-<td>711</td></tr>
-<tr class="a">
-<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
-<td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
-<td>At-clause should have a non-empty description.</td>
-<td>746</td></tr>
+<td>674</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
@@ -16929,7 +16917,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 19 has parse error. Details: no viable alternative at input '&lt;code&gt;\n   *   List&lt;Future&lt;' while parsing HTML_TAG</td>
 <td>167</td></tr></table></div>
 <div class="section">
@@ -19851,7 +19839,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 2 has parse error. Unrecognized error from ANTLR parser: null</td>
 <td>83</td></tr>
 <tr class="a">
@@ -30182,53 +30170,47 @@
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>150</td></tr>
-<tr class="b">
-<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
-<td>sizes</td>
-<td>LineLength</td>
-<td>Line is longer than 100 characters (found 110).</td>
-<td>190</td></tr></table></div>
+<td>150</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestFastFail.java">org/apache/hadoop/hbase/client/TestFastFail.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>82</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>93</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>101</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>110</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 189 lines (max allowed is 150).</td>
 <td>117</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -30237,433 +30219,433 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestFromClientSide.java">org/apache/hadoop/hbase/client/TestFromClientSide.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>596</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'for' child have incorrect indentation level 8, expected level should be 6.</td>
 <td>688</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' have incorrect indentation level 0, expected level should be 2.</td>
 <td>710</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 299 lines (max allowed is 150).</td>
 <td>860</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 212 lines (max allowed is 150).</td>
 <td>1324</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 109).</td>
 <td>1436</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 110).</td>
 <td>1437</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 109).</td>
 <td>1445</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 110).</td>
 <td>1446</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 109).</td>
 <td>1453</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 110).</td>
 <td>1454</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 109).</td>
 <td>1461</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 110).</td>
 <td>1462</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 134).</td>
 <td>1498</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 135).</td>
 <td>1499</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 134).</td>
 <td>1507</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 135).</td>
 <td>1508</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 133).</td>
 <td>1523</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 134).</td>
 <td>1524</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 133).</td>
 <td>1532</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 134).</td>
 <td>1533</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 192 lines (max allowed is 150).</td>
 <td>1538</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
 <td>1744</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
 <td>1745</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
 <td>1788</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
 <td>1789</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
 <td>1797</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
 <td>1798</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 300 lines (max allowed is 150).</td>
 <td>1912</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization rcurly' have incorrect indentation level 4, expected level should be one of the following: 8, 10.</td>
 <td>2933</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization rcurly' have incorrect indentation level 4, expected level should be one of the following: 8, 10.</td>
 <td>2949</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization rcurly' have incorrect indentation level 4, expected level should be one of the following: 8, 10.</td>
 <td>2957</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization rcurly' have incorrect indentation level 4, expected level should be one of the following: 8, 10.</td>
 <td>3031</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization rcurly' have incorrect indentation level 4, expected level should be one of the following: 8, 10.</td>
 <td>3047</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization rcurly' have incorrect indentation level 4, expected level should be one of the following: 8, 10.</td>
 <td>3055</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>3517</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>3518</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>3519</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 212 lines (max allowed is 150).</td>
 <td>3523</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 134).</td>
 <td>3698</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 136).</td>
 <td>3699</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 134).</td>
 <td>3707</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 136).</td>
 <td>3708</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 133).</td>
 <td>3723</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 135).</td>
 <td>3724</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 133).</td>
 <td>3732</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 135).</td>
 <td>3733</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
 <td>4046</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'Result' have incorrect indentation level 4, expected level should be 6.</td>
 <td>4047</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
 <td>4074</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'Result' have incorrect indentation level 4, expected level should be 6.</td>
 <td>4075</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>MethodParamPad</td>
 <td>'(' is preceded with whitespace.</td>
 <td>4114</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>4144</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
 <td>4334</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 106).</td>
 <td>4618</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 106).</td>
 <td>4670</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 112).</td>
 <td>4671</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 104).</td>
 <td>4672</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>EmptyBlock</td>
 <td>Must have at least one statement.</td>
 <td>5125</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>EmptyBlock</td>
 <td>Must have at least one statement.</td>
 <td>5138</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>EmptyBlock</td>
 <td>Must have at least one statement.</td>
 <td>5200</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
 <td>Inner assignments should be avoided.</td>
 <td>5440</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 105).</td>
 <td>5608</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 105).</td>
 <td>5622</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 105).</td>
 <td>5636</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 102).</td>
 <td>5676</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 108).</td>
 <td>5677</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 180 lines (max allowed is 150).</td>
 <td>5948</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 104).</td>
 <td>6591</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 104).</td>
 <td>6610</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -30672,127 +30654,127 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestFromClientSide3.java">org/apache/hadoop/hbase/client/TestFromClientSide3.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>105</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>113</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>121</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>129</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'for rcurly' have incorrect indentation level 2, expected level should be 4.</td>
 <td>136</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
 <td>Inner assignments should be avoided.</td>
 <td>326</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
 <td>Inner assignments should be avoided.</td>
 <td>352</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
 <td>Inner assignments should be avoided.</td>
 <td>387</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>MethodParamPad</td>
 <td>'(' is preceded with whitespace.</td>
 <td>398</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 6, expected level should be 4.</td>
 <td>399</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 6, expected level should be 4.</td>
 <td>490</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>MethodParamPad</td>
 <td>'(' is preceded with whitespace.</td>
 <td>607</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 105).</td>
 <td>653</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 106).</td>
 <td>783</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 106).</td>
 <td>864</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>892</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>905</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>908</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>919</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -30801,19 +30783,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestFromClientSideNoCodec.java">org/apache/hadoop/hbase/client/TestFromClientSideNoCodec.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>58</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -30822,19 +30804,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestFromClientSideScanExcpetion.java">org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>176</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -30843,25 +30825,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestGet.java">org/apache/hadoop/hbase/client/TestGet.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 104).</td>
 <td>125</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 105).</td>
 <td>131</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -30870,25 +30852,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestHBaseAdminNoCluster.java">org/apache/hadoop/hbase/client/TestHBaseAdminNoCluster.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>121</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 156 lines (max allowed is 150).</td>
 <td>125</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
@@ -30897,37 +30879,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestHTableMultiplexer.java">org/apache/hadoop/hbase/client/TestHTableMultiplexer.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>61</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>69</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>121</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>141</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -30936,19 +30918,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestHTableMultiplexerFlushCache.java">org/apache/hadoop/hbase/client/TestHTableMultiplexerFlushCache.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>66</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -30957,13 +30939,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestImmutableHTableDescriptor.java">org/apache/hadoop/hbase/client/TestImmutableHTableDescriptor.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -30972,19 +30954,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestIncrementsFromClientSide.java">org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>92</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -30993,13 +30975,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestIntraRowPagination.java">org/apache/hadoop/hbase/client/TestIntraRowPagination.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -31008,31 +30990,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestLeaseRenewal.java">org/apache/hadoop/hbase/client/TestLeaseRenewal.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>70</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>80</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>88</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -31041,13 +31023,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestLimitedScanWithFilter.java">org/apache/hadoop/hbase/client/TestLimitedScanWithFilter.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -31056,85 +31038,85 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestMetaCache.java">org/apache/hadoop/hbase/client/TestMetaCache.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>AvoidStarImport</td>
 <td>Using the '.*' form of import should be avoided - org.apache.hadoop.hbase.*.</td>
 <td>30</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>68</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>89</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>196</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>197</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>198</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>199</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>200</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
 <td>201</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block rcurly' have incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
 <td>202</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 105).</td>
 <td>273</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
 <td>276</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -31143,25 +31125,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestMetricsConnection.java">org/apache/hadoop/hbase/client/TestMetricsConnection.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>UnusedImports</td>
 <td>Unused import - java.util.concurrent.atomic.AtomicBoolean.</td>
 <td>27</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child have incorrect indentation level 8, expected level should be 6.</td>
 <td>126</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -31170,13 +31152,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestMobCloneSnapshotFromClient.java">org/apache/hadoop/hbase/client/TestMobCloneSnapshotFromClient.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -31185,61 +31167,61 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestMultiParallel.java">org/apache/hadoop/hbase/client/TestMultiParallel.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>176</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>177</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>178</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>179</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>284</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>295</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 110).</td>
 <td>331</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
 <td>Inner assignments should be avoided.</td>
 <td>544</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -31248,187 +31230,187 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestMultipleTimestamps.java">org/apache/hadoop/hbase/client/TestMultipleTimestamps.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>AvoidStarImport</td>
 <td>Using the '.*' form of import should be avoided - org.junit.Assert.*.</td>
 <td>20</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>AvoidStarImport</td>
 <td>Using the '.*' form of import should be avoided - org.apache.hadoop.hbase.*.</td>
 <td>26</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 104).</td>
 <td>44</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>62</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>70</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>78</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>86</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>199</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>315</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>346</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>371</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>396</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>436</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>437</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>452</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>453</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>454</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>455</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>458</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>472</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>476</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>493</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>494</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>512</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>513</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>526</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>527</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>534</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>535</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
@@ -31437,73 +31419,73 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestOperation.java">org/apache/hadoop/hbase/client/TestOperation.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>284</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child have incorrect indentation level 8, expected level should be 6.</td>
 <td>426</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child have incorrect indentation level 8, expected level should be 6.</td>
 <td>427</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child have incorrect indentation level 8, expected level should be 6.</td>
 <td>428</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child have incorrect indentation level 8, expected level should be 6.</td>
 <td>429</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child have incorrect indentation level 8, expected level should be 6.</td>
 <td>430</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child have incorrect indentation level 8, expected level should be 6.</td>
 <td>431</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child have incorrect indentation level 8, expected level should be 6.</td>
 <td>432</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child have incorrect indentation level 8, expected level should be 6.</td>
 <td>433</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child have incorrect indentation level 8, expected level should be 6.</td>
 <td>434</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -31512,13 +31494,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestPutDeleteEtcCellIteration.java">org/apache/hadoop/hbase/client/TestPutDeleteEtcCellIteration.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -31527,25 +31509,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestPutWithDelete.java">org/apache/hadoop/hbase/client/TestPutWithDelete.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>AvoidStarImport</td>
 <td>Using the '.*' form of import should be avoided - org.apache.hadoop.hbase.*.</td>
 <td>22</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>48</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -31554,13 +31536,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestRawAsyncTableLimitedScanWithFilter.java">org/apache/hadoop/hbase/client/TestRawAsyncTableLimitedScanWithFilter.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -31569,13 +31551,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestRawAsyncTableScan.java">org/apache/hadoop/hbase/client/TestRawAsyncTableScan.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
@@ -31584,31 +31566,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestReplicaWithCluster.java">org/apache/hadoop/hbase/client/TestReplicaWithCluster.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>278</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 102).</td>
 <td>491</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
 <td>621</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -31617,61 +31599,61 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestReplicasClient.java">org/apache/hadoop/hbase/client/TestReplicasClient.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>226</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>263</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 117).</td>
 <td>583</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 122).</td>
 <td>658</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 115).</td>
 <td>659</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>782</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'else' construct must use '{}'s.</td>
 <td>783</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>879</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -31680,19 +31662,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestRestoreSnapshotFromClient.java">org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClient.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 107).</td>
 <td>251</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -31701,25 +31683,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestResult.java">org/apache/hadoop/hbase/client/TestResult.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>72</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>277</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -31728,37 +31710,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestResultSizeEstimation.java">org/apache/hadoop/hbase/client/TestResultSizeEstimation.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>RedundantImport</td>
 <td>Redundant import from the same package - org.apache.hadoop.hbase.client.Put.</td>
 <td>30</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>RedundantImport</td>
 <td>Redundant import from the same package - org.apache.hadoop.hbase.client.ResultScanner.</td>
 <td>31</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>RedundantImport</td>
 <td>Redundant import from the same package - org.apache.hadoop.hbase.client.Scan.</td>
 <td>32</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>118</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
@@ -31767,13 +31749,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestReversedScannerCallable.java">org/apache/hadoop/hbase/client/TestReversedScannerCallable.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>UnusedImports</td>
@@ -31782,31 +31764,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestScan.java">org/apache/hadoop/hbase/client/TestScan.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 102).</td>
 <td>89</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 105).</td>
 <td>116</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 106).</td>
 <td>122</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -31815,49 +31797,49 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestScannerTimeout.java">org/apache/hadoop/hbase/client/TestScannerTimeout.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>UnusedImports</td>
 <td>Unused import - org.junit.Assert.fail.</td>
 <td>21</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>66</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>85</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>93</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>103</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>134</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -31866,121 +31848,121 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestScannersFromClientSide.java">org/apache/hadoop/hbase/client/TestScannersFromClientSide.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>90</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>100</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>108</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>116</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>126</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>303</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>304</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>305</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>306</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>307</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
 <td>309</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>349</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'for' child have incorrect indentation level 8, expected level should be 6.</td>
 <td>427</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'for rcurly' have incorrect indentation level 6, expected level should be 4.</td>
 <td>428</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>469</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>519</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>542</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>615</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -31989,13 +31971,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestScannersFromClientSide2.java">org/apache/hadoop/hbase/client/TestScannersFromClientSide2.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
@@ -32004,13 +31986,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestServerBusyException.java">org/apache/hadoop/hbase/client/TestServerBusyException.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -32019,25 +32001,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestSmallReversedScanner.java">org/apache/hadoop/hbase/client/TestSmallReversedScanner.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>77</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 117).</td>
 <td>119</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -32046,13 +32028,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestSnapshotCloneIndependence.java">org/apache/hadoop/hbase/client/TestSnapshotCloneIndependence.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -32061,13 +32043,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestSnapshotFromAdmin.java">org/apache/hadoop/hbase/client/TestSnapshotFromAdmin.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -32076,67 +32058,67 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestSnapshotFromClient.java">org/apache/hadoop/hbase/client/TestSnapshotFromClient.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>149</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>167</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>203</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'try' have incorrect indentation level 4, expected level should be 6.</td>
 <td>263</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'try' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>264</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'try' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>265</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'try' child have incorrect indentation level 10, expected level should be 8.</td>
 <td>266</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'try' child have incorrect indentation level 6, expected level should be 8.</td>
 <td>267</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'try rcurly' have incorrect indentation level 4, expected level should be 6.</td>
 <td>268</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -32145,13 +32127,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestSnapshotMetadata.java">org/apache/hadoop/hbase/client/TestSnapshotMetadata.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -32160,19 +32142,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestSplitOrMergeStatus.java">org/apache/hadoop/hbase/client/TestSplitOrMergeStatus.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>61</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -32181,61 +32163,61 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestTableDescriptorBuilder.java">org/apache/hadoop/hbase/client/TestTableDescriptorBuilder.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>90</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>109</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>160</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>177</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child have incorrect indentation level 6, expected level should be one of the following: 4, 31.</td>
 <td>178</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child have incorrect indentation level 6, expected level should be one of the following: 4, 31.</td>
 <td>180</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>181</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child have incorrect indentation level 6, expected level should be one of the following: 4, 33.</td>
 <td>182</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -32244,13 +32226,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestTableFavoredNodes.java">org/apache/hadoop/hbase/client/TestTableFavoredNodes.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -32259,13 +32241,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestTableSnapshotScanner.java">org/apache/hadoop/hbase/client/TestTableSnapshotScanner.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -32274,115 +32256,115 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestTimestampsF

<TRUNCATED>

[18/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html
index 77ac135..9b51c4b 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":6,"i10":6,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":6};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":6,"i10":6,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":6};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -133,7 +133,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public abstract class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.54">ModifyPeerProcedure</a>
+public abstract class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.53">ModifyPeerProcedure</a>
 extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/AbstractPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">AbstractPeerProcedure</a>&lt;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState&gt;</pre>
 <div class="block">The base class for all replication peer related procedure except sync replication state
  transition.</div>
@@ -189,8 +189,8 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#LOG">LOG</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private static int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#SET_LAST_SEQ_ID_BATCH_SIZE">SET_LAST_SEQ_ID_BATCH_SIZE</a></span></code>&nbsp;</td>
+<td class="colFirst"><code>protected static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#UPDATE_LAST_SEQ_ID_BATCH_SIZE">UPDATE_LAST_SEQ_ID_BATCH_SIZE</a></span></code>&nbsp;</td>
 </tr>
 </table>
 <ul class="blockList">
@@ -292,8 +292,10 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 </td>
 </tr>
 <tr id="i8" class="altColor">
-<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html?is-external=true" title="class or interface in java.util.stream">Stream</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getTables-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getTables</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#nextStateAfterRefresh--">nextStateAfterRefresh</a></span>()</code>
+<div class="block">Implementation class can override this method.</div>
+</td>
 </tr>
 <tr id="i9" class="rowColor">
 <td class="colFirst"><code>protected abstract void</code></td>
@@ -321,23 +323,28 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#reopenRegions-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">reopenRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
 <tr id="i14" class="altColor">
-<td class="colFirst"><code>protected boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#reopenRegionsAfterRefresh--">reopenRegionsAfterRefresh</a></span>()</code>
-<div class="block">Implementation class can override this method.</div>
-</td>
-</tr>
-<tr id="i15" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">rollbackState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
              org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState&nbsp;state)</code>
 <div class="block">called to perform the rollback of the specified state</div>
 </td>
 </tr>
+<tr id="i15" class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setLastPushedSequenceId-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">setLastPushedSequenceId</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+                       <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig)</code>&nbsp;</td>
+</tr>
 <tr id="i16" class="altColor">
-<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setLastSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">setLastSequenceIdForSerialPeer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setLastPushedSequenceIdForTable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.TableName-java.util.Map-">setLastPushedSequenceIdForTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+                               <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;lastSeqIds)</code>&nbsp;</td>
 </tr>
 <tr id="i17" class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#updateLastPushedSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateLastPushedSequenceIdForSerialPeer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
+</tr>
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>protected abstract void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#updatePeerStorage-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updatePeerStorage</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
@@ -397,19 +404,19 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 <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/master/replication/ModifyPeerProcedure.html#line.56">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.55">LOG</a></pre>
 </li>
 </ul>
-<a name="SET_LAST_SEQ_ID_BATCH_SIZE">
+<a name="UPDATE_LAST_SEQ_ID_BATCH_SIZE">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>SET_LAST_SEQ_ID_BATCH_SIZE</h4>
-<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.58">SET_LAST_SEQ_ID_BATCH_SIZE</a></pre>
+<h4>UPDATE_LAST_SEQ_ID_BATCH_SIZE</h4>
+<pre>protected static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.57">UPDATE_LAST_SEQ_ID_BATCH_SIZE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.master.replication.ModifyPeerProcedure.SET_LAST_SEQ_ID_BATCH_SIZE">Constant Field Values</a></dd>
+<dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.master.replication.ModifyPeerProcedure.UPDATE_LAST_SEQ_ID_BATCH_SIZE">Constant Field Values</a></dd>
 </dl>
 </li>
 </ul>
@@ -427,7 +434,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 <ul class="blockList">
 <li class="blockList">
 <h4>ModifyPeerProcedure</h4>
-<pre>protected&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.60">ModifyPeerProcedure</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.59">ModifyPeerProcedure</a>()</pre>
 </li>
 </ul>
 <a name="ModifyPeerProcedure-java.lang.String-">
@@ -436,7 +443,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ModifyPeerProcedure</h4>
-<pre>protected&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.63">ModifyPeerProcedure</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;peerId)</pre>
+<pre>protected&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.62">ModifyPeerProcedure</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;peerId)</pre>
 </li>
 </ul>
 </li>
@@ -453,7 +460,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 <ul class="blockList">
 <li class="blockList">
 <h4>prePeerModification</h4>
-<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.74">prePeerModification</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.73">prePeerModification</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                             <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block">Called before we start the actual processing. The implementation should call the pre CP hook,
@@ -474,7 +481,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 <ul class="blockList">
 <li class="blockList">
 <h4>updatePeerStorage</h4>
-<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.77">updatePeerStorage</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.76">updatePeerStorage</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                                    throws <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -488,7 +495,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 <ul class="blockList">
 <li class="blockList">
 <h4>postPeerModification</h4>
-<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.88">postPeerModification</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.87">postPeerModification</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                              <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block">Called before we finish the procedure. The implementation can do some logging work, and also
@@ -511,19 +518,18 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 <ul class="blockList">
 <li class="blockList">
 <h4>releaseLatch</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.91">releaseLatch</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.90">releaseLatch</a>()</pre>
 </li>
 </ul>
-<a name="reopenRegionsAfterRefresh--">
+<a name="nextStateAfterRefresh--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>reopenRegionsAfterRefresh</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.100">reopenRegionsAfterRefresh</a>()</pre>
-<div class="block">Implementation class can override this method. The default return value is false which means we
- will jump to POST_PEER_MODIFICATION and finish the procedure. If returns true, we will jump to
- SERIAL_PEER_REOPEN_REGIONS.</div>
+<h4>nextStateAfterRefresh</h4>
+<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.98">nextStateAfterRefresh</a>()</pre>
+<div class="block">Implementation class can override this method. By default we will jump to
+ POST_PEER_MODIFICATION and finish the procedure.</div>
 </li>
 </ul>
 <a name="enablePeerBeforeFinish--">
@@ -532,7 +538,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 <ul class="blockList">
 <li class="blockList">
 <h4>enablePeerBeforeFinish</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.108">enablePeerBeforeFinish</a>()</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.106">enablePeerBeforeFinish</a>()</pre>
 <div class="block">The implementation class should override this method if the procedure may enter the serial
  related states.</div>
 </li>
@@ -543,7 +549,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 <ul class="blockList">
 <li class="blockList">
 <h4>refreshPeer</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.112">refreshPeer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.110">refreshPeer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                          <a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">PeerProcedureInterface.PeerOperationType</a>&nbsp;type)</pre>
 </li>
 </ul>
@@ -553,7 +559,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 <ul class="blockList">
 <li class="blockList">
 <h4>getOldPeerConfig</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.118">getOldPeerConfig</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.116">getOldPeerConfig</a>()</pre>
 </li>
 </ul>
 <a name="getNewPeerConfig--">
@@ -562,20 +568,22 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 <ul class="blockList">
 <li class="blockList">
 <h4>getNewPeerConfig</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.122">getNewPeerConfig</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.120">getNewPeerConfig</a>()</pre>
 </li>
 </ul>
-<a name="getTables-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
+<a name="updateLastPushedSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getTables</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html?is-external=true" title="class or interface in java.util.stream">Stream</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.126">getTables</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
-                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<h4>updateLastPushedSequenceIdForSerialPeer</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.124">updateLastPushedSequenceIdForSerialPeer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+                                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
+                                                       <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></code></dd>
 </dl>
 </li>
 </ul>
@@ -585,7 +593,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 <ul class="blockList">
 <li class="blockList">
 <h4>reopenRegions</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.138">reopenRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.129">reopenRegions</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -599,7 +607,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 <ul class="blockList">
 <li class="blockList">
 <h4>addToMap</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.159">addToMap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;lastSeqIds,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.157">addToMap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;lastSeqIds,
                       <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;encodedRegionName,
                       long&nbsp;barrier,
                       <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueueStorage</a>&nbsp;queueStorage)
@@ -610,15 +618,34 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 </dl>
 </li>
 </ul>
-<a name="setLastSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
+<a name="setLastPushedSequenceId-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setLastSequenceIdForSerialPeer</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.170">setLastSequenceIdForSerialPeer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
-                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
-                                            <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
+<h4>setLastPushedSequenceId</h4>
+<pre>protected final&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.168">setLastPushedSequenceId</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+                                             <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig)
+                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
+                                             <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="setLastPushedSequenceIdForTable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.TableName-java.util.Map-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setLastPushedSequenceIdForTable</h4>
+<pre>protected final&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.190">setLastPushedSequenceIdForTable</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+                                                     <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+                                                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;lastSeqIds)
+                                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
+                                                     <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
@@ -632,7 +659,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 <ul class="blockList">
 <li class="blockList">
 <h4>executeFromState</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.204">executeFromState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2">StateMachineProcedure.Flow</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.219">executeFromState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                                       org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState&nbsp;state)
                                                throws <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureSuspendedException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureSuspendedException</a>,
                                                       <a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureYieldException.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureYieldException</a>,
@@ -659,7 +686,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 <ul class="blockList">
 <li class="blockList">
 <h4>rollbackState</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.291">rollbackState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.305">rollbackState</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                              org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState&nbsp;state)
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                              <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -681,7 +708,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 <ul class="blockList">
 <li class="blockList">
 <h4>getState</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.302">getState</a>(int&nbsp;stateId)</pre>
+<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.316">getState</a>(int&nbsp;stateId)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getState-int-">StateMachineProcedure</a></code></span></div>
 <div class="block">Convert an ordinal (or state id) to an Enum (or more descriptive) state object.</div>
 <dl>
@@ -700,7 +727,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 <ul class="blockList">
 <li class="blockList">
 <h4>getStateId</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.307">getStateId</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState&nbsp;state)</pre>
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.321">getStateId</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState&nbsp;state)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getStateId-TState-">StateMachineProcedure</a></code></span></div>
 <div class="block">Convert the Enum (or more descriptive) state object to an ordinal (or state id).</div>
 <dl>
@@ -719,7 +746,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Ab
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getInitialState</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.312">getInitialState</a>()</pre>
+<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#line.326">getInitialState</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.html#getInitialState--">StateMachineProcedure</a></code></span></div>
 <div class="block">Return the initial state object that will be used for the first call to executeFromState().</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/master/replication/RemovePeerProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/replication/RemovePeerProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/replication/RemovePeerProcedure.html
index b9c7cbd..c714da5 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/replication/RemovePeerProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/replication/RemovePeerProcedure.html
@@ -194,6 +194,13 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 </tr>
 </table>
 <ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.master.replication.ModifyPeerProcedure">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.master.replication.<a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#UPDATE_LAST_SEQ_ID_BATCH_SIZE">UPDATE_LAST_SEQ_ID_BATCH_SIZE</a></code></li>
+</ul>
+<ul class="blockList">
 <li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure">
 <!--   -->
 </a>
@@ -281,7 +288,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.replication.<a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#enablePeerBeforeFinish--">enablePeerBeforeFinish</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">executeFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getInitialState--">getInitialState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getNewPeerConfig--">getNewPeerConfig</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getOldPeerConfig--">getOldPeerConfig</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getState-int-">getState</a>, <a href="../../../.
 ./../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">getStateId</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#reopenRegionsAfterRefresh--">reopenRegionsAfterRefresh</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">rollbackState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#enablePeerBeforeFinish--">enablePeerBeforeFinish</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">executeFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getInitialState--">getInitialState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getNewPeerConfig--">getNewPeerConfig</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getOldPeerConfig--">getOldPeerConfig</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getState-int-">getState</a>, <a href="../../../.
 ./../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">getStateId</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#nextStateAfterRefresh--">nextStateAfterRefresh</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">rollbackState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setLastPushedSequenceId-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">setLastPushedSequenceId</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setL
 astPushedSequenceIdForTable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.TableName-java.util.Map-">setLastPushedSequenceIdForTable</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#updateLastPushedSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateLastPushedSequenceIdForSerialPeer</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html
index 7f4b8ec..dbbc0ec 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -134,7 +134,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.39">UpdatePeerConfigProcedure</a>
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.49">UpdatePeerConfigProcedure</a>
 extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></pre>
 <div class="block">The procedure for updating the config for a replication peer.</div>
 </li>
@@ -202,6 +202,13 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 </tr>
 </table>
 <ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.master.replication.ModifyPeerProcedure">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.master.replication.<a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#UPDATE_LAST_SEQ_ID_BATCH_SIZE">UPDATE_LAST_SEQ_ID_BATCH_SIZE</a></code></li>
+</ul>
+<ul class="blockList">
 <li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure">
 <!--   -->
 </a>
@@ -251,57 +258,67 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <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/master/replication/UpdatePeerConfigProcedure.html#addToList-java.util.List-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationQueueStorage-">addToList</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;encodedRegionNames,
+         <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;encodedRegionName,
+         <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueueStorage</a>&nbsp;queueStorage)</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">deserializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)</code>
 <div class="block">Called on store load to allow the user to decode the previously serialized
  state.</div>
 </td>
 </tr>
-<tr id="i1" class="rowColor">
+<tr id="i2" class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#enablePeerBeforeFinish--">enablePeerBeforeFinish</a></span>()</code>
 <div class="block">The implementation class should override this method if the procedure may enter the serial
  related states.</div>
 </td>
 </tr>
-<tr id="i2" class="altColor">
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#getNewPeerConfig--">getNewPeerConfig</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i4" class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#getOldPeerConfig--">getOldPeerConfig</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">PeerProcedureInterface.PeerOperationType</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#getPeerOperationType--">getPeerOperationType</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#nextStateAfterRefresh--">nextStateAfterRefresh</a></span>()</code>
+<div class="block">Implementation class can override this method.</div>
+</td>
+</tr>
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#postPeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postPeerModification</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Called before we finish the procedure.</div>
 </td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#prePeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prePeerModification</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Called before we start the actual processing.</div>
 </td>
 </tr>
-<tr id="i7" class="rowColor">
-<td class="colFirst"><code>protected boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#reopenRegionsAfterRefresh--">reopenRegionsAfterRefresh</a></span>()</code>
-<div class="block">Implementation class can override this method.</div>
-</td>
-</tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">serializeStateData</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)</code>
 <div class="block">The user-level code of the procedure may have some state to
  persist (e.g.</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#updateLastPushedSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateLastPushedSequenceIdForSerialPeer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
+</tr>
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#updatePeerStorage-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updatePeerStorage</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
@@ -311,7 +328,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.replication.<a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">executeFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getInitialState--">getInitialState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getState-int-">getState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">getStateId</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.Maste
 rProcedureProtos.PeerModificationState-">rollbackState</a></code></li>
+<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#executeFromState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">executeFromState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getInitialState--">getInitialState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getState-int-">getState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getStateId-org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState-">getStateId</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#rollbackState-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.shaded.protobuf.generated.Maste
 rProcedureProtos.PeerModificationState-">rollbackState</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setLastPushedSequenceId-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">setLastPushedSequenceId</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setLastPushedSequenceIdForTable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.TableName-java.util.Map-">setLastPushedSequenceIdForTable</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure">
@@ -361,7 +378,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <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/master/replication/UpdatePeerConfigProcedure.html#line.41">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.51">LOG</a></pre>
 </li>
 </ul>
 <a name="peerConfig">
@@ -370,7 +387,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockList">
 <li class="blockList">
 <h4>peerConfig</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.43">peerConfig</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.53">peerConfig</a></pre>
 </li>
 </ul>
 <a name="oldPeerConfig">
@@ -379,7 +396,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockList">
 <li class="blockList">
 <h4>oldPeerConfig</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.45">oldPeerConfig</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.55">oldPeerConfig</a></pre>
 </li>
 </ul>
 <a name="enabled">
@@ -388,7 +405,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockListLast">
 <li class="blockList">
 <h4>enabled</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.47">enabled</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.57">enabled</a></pre>
 </li>
 </ul>
 </li>
@@ -405,7 +422,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockList">
 <li class="blockList">
 <h4>UpdatePeerConfigProcedure</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.49">UpdatePeerConfigProcedure</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.59">UpdatePeerConfigProcedure</a>()</pre>
 </li>
 </ul>
 <a name="UpdatePeerConfigProcedure-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">
@@ -414,7 +431,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockListLast">
 <li class="blockList">
 <h4>UpdatePeerConfigProcedure</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.52">UpdatePeerConfigProcedure</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;peerId,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.62">UpdatePeerConfigProcedure</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;peerId,
                                  <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig)</pre>
 </li>
 </ul>
@@ -432,23 +449,56 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockList">
 <li class="blockList">
 <h4>getPeerOperationType</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">PeerProcedureInterface.PeerOperationType</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.58">getPeerOperationType</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure">PeerProcedureInterface.PeerOperationType</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.68">getPeerOperationType</a>()</pre>
 </li>
 </ul>
-<a name="reopenRegionsAfterRefresh--">
+<a name="addToList-java.util.List-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationQueueStorage-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>reopenRegionsAfterRefresh</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.63">reopenRegionsAfterRefresh</a>()</pre>
-<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#reopenRegionsAfterRefresh--">ModifyPeerProcedure</a></code></span></div>
-<div class="block">Implementation class can override this method. The default return value is false which means we
- will jump to POST_PEER_MODIFICATION and finish the procedure. If returns true, we will jump to
- SERIAL_PEER_REOPEN_REGIONS.</div>
+<h4>addToList</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.72">addToList</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;encodedRegionNames,
+                       <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;encodedRegionName,
+                       <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueueStorage</a>&nbsp;queueStorage)
+                throws <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="nextStateAfterRefresh--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>nextStateAfterRefresh</h4>
+<pre>protected&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.82">nextStateAfterRefresh</a>()</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#nextStateAfterRefresh--">ModifyPeerProcedure</a></code></span></div>
+<div class="block">Implementation class can override this method. By default we will jump to
+ POST_PEER_MODIFICATION and finish the procedure.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#reopenRegionsAfterRefresh--">reopenRegionsAfterRefresh</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></code></dd>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#nextStateAfterRefresh--">nextStateAfterRefresh</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="updateLastPushedSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>updateLastPushedSequenceIdForSerialPeer</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.107">updateLastPushedSequenceIdForSerialPeer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+                                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
+                                                       <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#updateLastPushedSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateLastPushedSequenceIdForSerialPeer</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></code></dd>
 </dl>
 </li>
 </ul>
@@ -458,7 +508,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockList">
 <li class="blockList">
 <h4>enablePeerBeforeFinish</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.71">enablePeerBeforeFinish</a>()</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.153">enablePeerBeforeFinish</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#enablePeerBeforeFinish--">ModifyPeerProcedure</a></code></span></div>
 <div class="block">The implementation class should override this method if the procedure may enter the serial
  related states.</div>
@@ -474,7 +524,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockList">
 <li class="blockList">
 <h4>getOldPeerConfig</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.78">getOldPeerConfig</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.160">getOldPeerConfig</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getOldPeerConfig--">getOldPeerConfig</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></code></dd>
@@ -487,7 +537,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockList">
 <li class="blockList">
 <h4>getNewPeerConfig</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.83">getNewPeerConfig</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.165">getNewPeerConfig</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getNewPeerConfig--">getNewPeerConfig</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></code></dd>
@@ -500,7 +550,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockList">
 <li class="blockList">
 <h4>prePeerModification</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.88">prePeerModification</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.170">prePeerModification</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#prePeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">ModifyPeerProcedure</a></code></span></div>
 <div class="block">Called before we start the actual processing. The implementation should call the pre CP hook,
@@ -522,7 +572,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockList">
 <li class="blockList">
 <h4>updatePeerStorage</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.100">updatePeerStorage</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.182">updatePeerStorage</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                           throws <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -538,7 +588,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockList">
 <li class="blockList">
 <h4>postPeerModification</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.108">postPeerModification</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.192">postPeerModification</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                     <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#postPeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">ModifyPeerProcedure</a></code></span></div>
@@ -564,7 +614,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockList">
 <li class="blockList">
 <h4>serializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.121">serializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.205">serializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#serializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
 <div class="block">The user-level code of the procedure may have some state to
@@ -586,7 +636,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/replication/Mo
 <ul class="blockListLast">
 <li class="blockList">
 <h4>deserializeStateData</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.132">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#line.216">deserializeStateData</a>(<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureStateSerializer.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureStateSerializer</a>&nbsp;serializer)
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#deserializeStateData-org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer-">Procedure</a></code></span></div>
 <div class="block">Called on store load to allow the user to decode the previously serialized

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/package-tree.html b/devapidocs/org/apache/hadoop/hbase/package-tree.html
index 216a427..2eae19b 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -441,18 +441,18 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompatibilitySingletonFactory.SingletonStorage.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompatibilitySingletonFactory.SingletonStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MemoryCompactionPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompareOperator</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Size.Unit.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Size.Unit</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeepDeletedCells</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HealthChecker.HealthCheckerExitStatus.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HealthChecker.HealthCheckerExitStatus</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MemoryCompactionPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompatibilitySingletonFactory.SingletonStorage.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompatibilitySingletonFactory.SingletonStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Cell.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Cell.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Size.Unit.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Size.Unit</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeyValue.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterMetrics.Option</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Coprocessor.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HConstants.OperationStatusCode.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HConstants.OperationStatusCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompareOperator</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterMetrics.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterMetrics.Option</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellBuilderType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilderType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeyValue.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HealthChecker.HealthCheckerExitStatus.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HealthChecker.HealthCheckerExitStatus</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaTableAccessor.QueryType</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
index e7c672c..cf0e9c9 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -212,10 +212,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">Procedure.LockState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockedResourceType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">StateMachineProcedure.Flow</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">Procedure.LockState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">RootProcedureState.State</span></a></li>
 </ul>
 </li>


[05/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
index d2520a1..68f6ec1 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -16,11 +16,11 @@
 <span class="sourceLineNo">008</span>@InterfaceAudience.Private<a name="line.8"></a>
 <span class="sourceLineNo">009</span>public class Version {<a name="line.9"></a>
 <span class="sourceLineNo">010</span>  public static final String version = "3.0.0-SNAPSHOT";<a name="line.10"></a>
-<span class="sourceLineNo">011</span>  public static final String revision = "c8dff328cb39e5a3a5a42c6b73fca7af707a0bcb";<a name="line.11"></a>
+<span class="sourceLineNo">011</span>  public static final String revision = "1e56938757d2958631ac1ea07387eaa61997d84a";<a name="line.11"></a>
 <span class="sourceLineNo">012</span>  public static final String user = "jenkins";<a name="line.12"></a>
-<span class="sourceLineNo">013</span>  public static final String date = "Sat Mar 31 14:41:18 UTC 2018";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Sun Apr  1 14:41:16 UTC 2018";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String url = "git://jenkins-websites1.apache.org/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a>
-<span class="sourceLineNo">015</span>  public static final String srcChecksum = "952cd074f3c741c573ff0d57a237f941";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "2e76f99b04d039004b3db1b121ecb142";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html
index 8d3ba73..37a6641 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html
@@ -37,90 +37,98 @@
 <span class="sourceLineNo">029</span>import org.slf4j.LoggerFactory;<a name="line.29"></a>
 <span class="sourceLineNo">030</span><a name="line.30"></a>
 <span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.AddPeerStateData;<a name="line.31"></a>
-<span class="sourceLineNo">032</span><a name="line.32"></a>
-<span class="sourceLineNo">033</span>/**<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * The procedure for adding a new replication peer.<a name="line.34"></a>
-<span class="sourceLineNo">035</span> */<a name="line.35"></a>
-<span class="sourceLineNo">036</span>@InterfaceAudience.Private<a name="line.36"></a>
-<span class="sourceLineNo">037</span>public class AddPeerProcedure extends ModifyPeerProcedure {<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
-<span class="sourceLineNo">039</span>  private static final Logger LOG = LoggerFactory.getLogger(AddPeerProcedure.class);<a name="line.39"></a>
-<span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>  private ReplicationPeerConfig peerConfig;<a name="line.41"></a>
-<span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>  private boolean enabled;<a name="line.43"></a>
-<span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>  public AddPeerProcedure() {<a name="line.45"></a>
-<span class="sourceLineNo">046</span>  }<a name="line.46"></a>
-<span class="sourceLineNo">047</span><a name="line.47"></a>
-<span class="sourceLineNo">048</span>  public AddPeerProcedure(String peerId, ReplicationPeerConfig peerConfig, boolean enabled) {<a name="line.48"></a>
-<span class="sourceLineNo">049</span>    super(peerId);<a name="line.49"></a>
-<span class="sourceLineNo">050</span>    this.peerConfig = peerConfig;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>    this.enabled = enabled;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>  }<a name="line.52"></a>
-<span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span>  @Override<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  public PeerOperationType getPeerOperationType() {<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    return PeerOperationType.ADD;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>  }<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>  @Override<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  protected boolean reopenRegionsAfterRefresh() {<a name="line.60"></a>
-<span class="sourceLineNo">061</span>    return true;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  }<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>  @Override<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  protected boolean enablePeerBeforeFinish() {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    return enabled;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  }<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>  @Override<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  protected ReplicationPeerConfig getNewPeerConfig() {<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    return peerConfig;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  }<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  @Override<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  protected void prePeerModification(MasterProcedureEnv env)<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      throws IOException, ReplicationException {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    if (cpHost != null) {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>      cpHost.preAddReplicationPeer(peerId, peerConfig);<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    }<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    env.getReplicationPeerManager().preAddPeer(peerId, peerConfig);<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  }<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>  @Override<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  protected void updatePeerStorage(MasterProcedureEnv env) throws ReplicationException {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    env.getReplicationPeerManager().addPeer(peerId, peerConfig,<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      peerConfig.isSerial() ? false : enabled);<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  }<a name="line.88"></a>
-<span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span>  @Override<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  protected void postPeerModification(MasterProcedureEnv env)<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      throws IOException, ReplicationException {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    LOG.info("Successfully added {} peer {}, config {}", enabled ? "ENABLED" : "DISABLED", peerId,<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      peerConfig);<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    if (cpHost != null) {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      env.getMasterCoprocessorHost().postAddReplicationPeer(peerId, peerConfig);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  }<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>  @Override<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  protected void serializeStateData(ProcedureStateSerializer serializer) throws IOException {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    super.serializeStateData(serializer);<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    serializer.serialize(AddPeerStateData.newBuilder()<a name="line.104"></a>
-<span class="sourceLineNo">105</span>        .setPeerConfig(ReplicationPeerConfigUtil.convert(peerConfig)).setEnabled(enabled).build());<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  }<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>  @Override<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  protected void deserializeStateData(ProcedureStateSerializer serializer) throws IOException {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    super.deserializeStateData(serializer);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    AddPeerStateData data = serializer.deserialize(AddPeerStateData.class);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    peerConfig = ReplicationPeerConfigUtil.convert(data.getPeerConfig());<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    enabled = data.getEnabled();<a name="line.113"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState;<a name="line.32"></a>
+<span class="sourceLineNo">033</span><a name="line.33"></a>
+<span class="sourceLineNo">034</span>/**<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * The procedure for adding a new replication peer.<a name="line.35"></a>
+<span class="sourceLineNo">036</span> */<a name="line.36"></a>
+<span class="sourceLineNo">037</span>@InterfaceAudience.Private<a name="line.37"></a>
+<span class="sourceLineNo">038</span>public class AddPeerProcedure extends ModifyPeerProcedure {<a name="line.38"></a>
+<span class="sourceLineNo">039</span><a name="line.39"></a>
+<span class="sourceLineNo">040</span>  private static final Logger LOG = LoggerFactory.getLogger(AddPeerProcedure.class);<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>  private ReplicationPeerConfig peerConfig;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>  private boolean enabled;<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>  public AddPeerProcedure() {<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  }<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>  public AddPeerProcedure(String peerId, ReplicationPeerConfig peerConfig, boolean enabled) {<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    super(peerId);<a name="line.50"></a>
+<span class="sourceLineNo">051</span>    this.peerConfig = peerConfig;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>    this.enabled = enabled;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  }<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  @Override<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  public PeerOperationType getPeerOperationType() {<a name="line.56"></a>
+<span class="sourceLineNo">057</span>    return PeerOperationType.ADD;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  }<a name="line.58"></a>
+<span class="sourceLineNo">059</span><a name="line.59"></a>
+<span class="sourceLineNo">060</span>  @Override<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  protected PeerModificationState nextStateAfterRefresh() {<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    return peerConfig.isSerial() ? PeerModificationState.SERIAL_PEER_REOPEN_REGIONS<a name="line.62"></a>
+<span class="sourceLineNo">063</span>      : super.nextStateAfterRefresh();<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  }<a name="line.64"></a>
+<span class="sourceLineNo">065</span><a name="line.65"></a>
+<span class="sourceLineNo">066</span>  @Override<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  protected void updateLastPushedSequenceIdForSerialPeer(MasterProcedureEnv env)<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      throws IOException, ReplicationException {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    setLastPushedSequenceId(env, peerConfig);<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  }<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>  @Override<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  protected boolean enablePeerBeforeFinish() {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    return enabled;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  }<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>  @Override<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  protected ReplicationPeerConfig getNewPeerConfig() {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    return peerConfig;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  }<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  @Override<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  protected void prePeerModification(MasterProcedureEnv env)<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      throws IOException, ReplicationException {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    if (cpHost != null) {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      cpHost.preAddReplicationPeer(peerId, peerConfig);<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    }<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    env.getReplicationPeerManager().preAddPeer(peerId, peerConfig);<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  }<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>  @Override<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  protected void updatePeerStorage(MasterProcedureEnv env) throws ReplicationException {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    env.getReplicationPeerManager().addPeer(peerId, peerConfig,<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      peerConfig.isSerial() ? false : enabled);<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  }<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>  @Override<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  protected void postPeerModification(MasterProcedureEnv env)<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      throws IOException, ReplicationException {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    LOG.info("Successfully added {} peer {}, config {}", enabled ? "ENABLED" : "DISABLED", peerId,<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      peerConfig);<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    if (cpHost != null) {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      env.getMasterCoprocessorHost().postAddReplicationPeer(peerId, peerConfig);<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    }<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  }<a name="line.107"></a>
+<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">109</span>  @Override<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  protected void serializeStateData(ProcedureStateSerializer serializer) throws IOException {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    super.serializeStateData(serializer);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    serializer.serialize(AddPeerStateData.newBuilder()<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      .setPeerConfig(ReplicationPeerConfigUtil.convert(peerConfig)).setEnabled(enabled).build());<a name="line.113"></a>
 <span class="sourceLineNo">114</span>  }<a name="line.114"></a>
-<span class="sourceLineNo">115</span>}<a name="line.115"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>  @Override<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  protected void deserializeStateData(ProcedureStateSerializer serializer) throws IOException {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    super.deserializeStateData(serializer);<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    AddPeerStateData data = serializer.deserialize(AddPeerStateData.class);<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    peerConfig = ReplicationPeerConfigUtil.convert(data.getPeerConfig());<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    enabled = data.getEnabled();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  }<a name="line.122"></a>
+<span class="sourceLineNo">123</span>}<a name="line.123"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html
index 372175b..6e1231c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html
@@ -26,301 +26,315 @@
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.master.replication;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
 <span class="sourceLineNo">020</span>import java.io.IOException;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import java.io.UncheckedIOException;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.util.HashMap;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.Map;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.util.stream.Stream;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.master.MasterFileSystem;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.master.TableStateManager;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.master.TableStateManager.TableStateNotFoundException;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.procedure2.ProcedureSuspendedException;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.procedure2.ProcedureYieldException;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.replication.ReplicationQueueStorage;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.wal.WALSplitter;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.slf4j.Logger;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.slf4j.LoggerFactory;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState;<a name="line.47"></a>
-<span class="sourceLineNo">048</span><a name="line.48"></a>
-<span class="sourceLineNo">049</span>/**<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * The base class for all replication peer related procedure except sync replication state<a name="line.50"></a>
-<span class="sourceLineNo">051</span> * transition.<a name="line.51"></a>
-<span class="sourceLineNo">052</span> */<a name="line.52"></a>
-<span class="sourceLineNo">053</span>@InterfaceAudience.Private<a name="line.53"></a>
-<span class="sourceLineNo">054</span>public abstract class ModifyPeerProcedure extends AbstractPeerProcedure&lt;PeerModificationState&gt; {<a name="line.54"></a>
-<span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>  private static final Logger LOG = LoggerFactory.getLogger(ModifyPeerProcedure.class);<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>  private static final int SET_LAST_SEQ_ID_BATCH_SIZE = 1000;<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>  protected ModifyPeerProcedure() {<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  }<a name="line.61"></a>
-<span class="sourceLineNo">062</span><a name="line.62"></a>
-<span class="sourceLineNo">063</span>  protected ModifyPeerProcedure(String peerId) {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    super(peerId);<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  }<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>  /**<a name="line.67"></a>
-<span class="sourceLineNo">068</span>   * Called before we start the actual processing. The implementation should call the pre CP hook,<a name="line.68"></a>
-<span class="sourceLineNo">069</span>   * and also the pre-check for the peer modification.<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   * &lt;p&gt;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>   * If an IOException is thrown then we will give up and mark the procedure as failed directly. If<a name="line.71"></a>
-<span class="sourceLineNo">072</span>   * all checks passes then the procedure can not be rolled back any more.<a name="line.72"></a>
-<span class="sourceLineNo">073</span>   */<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  protected abstract void prePeerModification(MasterProcedureEnv env)<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      throws IOException, ReplicationException;<a name="line.75"></a>
-<span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span>  protected abstract void updatePeerStorage(MasterProcedureEnv env) throws ReplicationException;<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>  /**<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   * Called before we finish the procedure. The implementation can do some logging work, and also<a name="line.80"></a>
-<span class="sourceLineNo">081</span>   * call the coprocessor hook if any.<a name="line.81"></a>
-<span class="sourceLineNo">082</span>   * &lt;p&gt;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>   * Notice that, since we have already done the actual work, throwing {@code IOException} here will<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   * not fail this procedure, we will just ignore it and finish the procedure as suceeded. If<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   * {@code ReplicationException} is thrown we will retry since this usually means we fails to<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   * update the peer storage.<a name="line.86"></a>
-<span class="sourceLineNo">087</span>   */<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  protected abstract void postPeerModification(MasterProcedureEnv env)<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      throws IOException, ReplicationException;<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private void releaseLatch() {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    ProcedurePrepareLatch.releaseLatch(latch, this);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  }<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  /**<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * Implementation class can override this method. The default return value is false which means we<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * will jump to POST_PEER_MODIFICATION and finish the procedure. If returns true, we will jump to<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   * SERIAL_PEER_REOPEN_REGIONS.<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   */<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  protected boolean reopenRegionsAfterRefresh() {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    return false;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  }<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  /**<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * The implementation class should override this method if the procedure may enter the serial<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   * related states.<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   */<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  protected boolean enablePeerBeforeFinish() {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    throw new UnsupportedOperationException();<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  }<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>  private void refreshPeer(MasterProcedureEnv env, PeerOperationType type) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    addChildProcedure(env.getMasterServices().getServerManager().getOnlineServersList().stream()<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      .map(sn -&gt; new RefreshPeerProcedure(peerId, type, sn))<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      .toArray(RefreshPeerProcedure[]::new));<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  protected ReplicationPeerConfig getOldPeerConfig() {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    return null;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  }<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>  protected ReplicationPeerConfig getNewPeerConfig() {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    throw new UnsupportedOperationException();<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private Stream&lt;TableDescriptor&gt; getTables(MasterProcedureEnv env) throws IOException {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    ReplicationPeerConfig peerConfig = getNewPeerConfig();<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    Stream&lt;TableDescriptor&gt; stream = env.getMasterServices().getTableDescriptors().getAll().values()<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      .stream().filter(TableDescriptor::hasGlobalReplicationScope)<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      .filter(td -&gt; ReplicationUtils.contains(peerConfig, td.getTableName()));<a name="line.130"></a>
+<span class="sourceLineNo">021</span>import java.util.HashMap;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.Map;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.TableName;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.master.MasterFileSystem;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.master.TableStateManager;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.master.TableStateManager.TableStateNotFoundException;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.procedure2.ProcedureSuspendedException;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.procedure2.ProcedureYieldException;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.replication.ReplicationQueueStorage;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.wal.WALSplitter;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.slf4j.Logger;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.slf4j.LoggerFactory;<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState;<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>/**<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * The base class for all replication peer related procedure except sync replication state<a name="line.49"></a>
+<span class="sourceLineNo">050</span> * transition.<a name="line.50"></a>
+<span class="sourceLineNo">051</span> */<a name="line.51"></a>
+<span class="sourceLineNo">052</span>@InterfaceAudience.Private<a name="line.52"></a>
+<span class="sourceLineNo">053</span>public abstract class ModifyPeerProcedure extends AbstractPeerProcedure&lt;PeerModificationState&gt; {<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  private static final Logger LOG = LoggerFactory.getLogger(ModifyPeerProcedure.class);<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  protected static final int UPDATE_LAST_SEQ_ID_BATCH_SIZE = 1000;<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  protected ModifyPeerProcedure() {<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  }<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>  protected ModifyPeerProcedure(String peerId) {<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    super(peerId);<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  }<a name="line.64"></a>
+<span class="sourceLineNo">065</span><a name="line.65"></a>
+<span class="sourceLineNo">066</span>  /**<a name="line.66"></a>
+<span class="sourceLineNo">067</span>   * Called before we start the actual processing. The implementation should call the pre CP hook,<a name="line.67"></a>
+<span class="sourceLineNo">068</span>   * and also the pre-check for the peer modification.<a name="line.68"></a>
+<span class="sourceLineNo">069</span>   * &lt;p&gt;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>   * If an IOException is thrown then we will give up and mark the procedure as failed directly. If<a name="line.70"></a>
+<span class="sourceLineNo">071</span>   * all checks passes then the procedure can not be rolled back any more.<a name="line.71"></a>
+<span class="sourceLineNo">072</span>   */<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  protected abstract void prePeerModification(MasterProcedureEnv env)<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      throws IOException, ReplicationException;<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  protected abstract void updatePeerStorage(MasterProcedureEnv env) throws ReplicationException;<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>  /**<a name="line.78"></a>
+<span class="sourceLineNo">079</span>   * Called before we finish the procedure. The implementation can do some logging work, and also<a name="line.79"></a>
+<span class="sourceLineNo">080</span>   * call the coprocessor hook if any.<a name="line.80"></a>
+<span class="sourceLineNo">081</span>   * &lt;p&gt;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>   * Notice that, since we have already done the actual work, throwing {@code IOException} here will<a name="line.82"></a>
+<span class="sourceLineNo">083</span>   * not fail this procedure, we will just ignore it and finish the procedure as suceeded. If<a name="line.83"></a>
+<span class="sourceLineNo">084</span>   * {@code ReplicationException} is thrown we will retry since this usually means we fails to<a name="line.84"></a>
+<span class="sourceLineNo">085</span>   * update the peer storage.<a name="line.85"></a>
+<span class="sourceLineNo">086</span>   */<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  protected abstract void postPeerModification(MasterProcedureEnv env)<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      throws IOException, ReplicationException;<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  private void releaseLatch() {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    ProcedurePrepareLatch.releaseLatch(latch, this);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  }<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  /**<a name="line.94"></a>
+<span class="sourceLineNo">095</span>   * Implementation class can override this method. By default we will jump to<a name="line.95"></a>
+<span class="sourceLineNo">096</span>   * POST_PEER_MODIFICATION and finish the procedure.<a name="line.96"></a>
+<span class="sourceLineNo">097</span>   */<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  protected PeerModificationState nextStateAfterRefresh() {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    return PeerModificationState.POST_PEER_MODIFICATION;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  }<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>  /**<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * The implementation class should override this method if the procedure may enter the serial<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   * related states.<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  protected boolean enablePeerBeforeFinish() {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    throw new UnsupportedOperationException();<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private void refreshPeer(MasterProcedureEnv env, PeerOperationType type) {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    addChildProcedure(env.getMasterServices().getServerManager().getOnlineServersList().stream()<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      .map(sn -&gt; new RefreshPeerProcedure(peerId, type, sn))<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      .toArray(RefreshPeerProcedure[]::new));<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  }<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>  protected ReplicationPeerConfig getOldPeerConfig() {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    return null;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  }<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  protected ReplicationPeerConfig getNewPeerConfig() {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    throw new UnsupportedOperationException();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  }<a name="line.122"></a>
+<span class="sourceLineNo">123</span><a name="line.123"></a>
+<span class="sourceLineNo">124</span>  protected void updateLastPushedSequenceIdForSerialPeer(MasterProcedureEnv env)<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      throws IOException, ReplicationException {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    throw new UnsupportedOperationException();<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
+<span class="sourceLineNo">128</span><a name="line.128"></a>
+<span class="sourceLineNo">129</span>  private void reopenRegions(MasterProcedureEnv env) throws IOException {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    ReplicationPeerConfig peerConfig = getNewPeerConfig();<a name="line.130"></a>
 <span class="sourceLineNo">131</span>    ReplicationPeerConfig oldPeerConfig = getOldPeerConfig();<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    if (oldPeerConfig != null &amp;&amp; oldPeerConfig.isSerial()) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      stream = stream.filter(td -&gt; !ReplicationUtils.contains(oldPeerConfig, td.getTableName()));<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    }<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return stream;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  private void reopenRegions(MasterProcedureEnv env) throws IOException {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    Stream&lt;TableDescriptor&gt; stream = getTables(env);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    TableStateManager tsm = env.getMasterServices().getTableStateManager();<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    stream.filter(td -&gt; {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      try {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        return tsm.getTableState(td.getTableName()).isEnabled();<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      } catch (TableStateNotFoundException e) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>        return false;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      } catch (IOException e) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>        throw new UncheckedIOException(e);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      }<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    }).forEach(td -&gt; {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      try {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>        addChildProcedure(env.getAssignmentManager().createReopenProcedures(<a name="line.151"></a>
-<span class="sourceLineNo">152</span>          env.getAssignmentManager().getRegionStates().getRegionsOfTable(td.getTableName())));<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      } catch (IOException e) {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>        throw new UncheckedIOException(e);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    });<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  }<a name="line.157"></a>
-<span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  private void addToMap(Map&lt;String, Long&gt; lastSeqIds, String encodedRegionName, long barrier,<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      ReplicationQueueStorage queueStorage) throws ReplicationException {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    if (barrier &gt;= 0) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      lastSeqIds.put(encodedRegionName, barrier);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      if (lastSeqIds.size() &gt;= SET_LAST_SEQ_ID_BATCH_SIZE) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        queueStorage.setLastSequenceIds(peerId, lastSeqIds);<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        lastSeqIds.clear();<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      }<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    }<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  }<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>  private void setLastSequenceIdForSerialPeer(MasterProcedureEnv env)<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      throws IOException, ReplicationException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    Stream&lt;TableDescriptor&gt; stream = getTables(env);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    TableStateManager tsm = env.getMasterServices().getTableStateManager();<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    ReplicationQueueStorage queueStorage = env.getReplicationPeerManager().getQueueStorage();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    Connection conn = env.getMasterServices().getConnection();<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    RegionStates regionStates = env.getAssignmentManager().getRegionStates();<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    MasterFileSystem mfs = env.getMasterServices().getMasterFileSystem();<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    Map&lt;String, Long&gt; lastSeqIds = new HashMap&lt;String, Long&gt;();<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    stream.forEach(td -&gt; {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      try {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        if (tsm.getTableState(td.getTableName()).isEnabled()) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          for (Pair&lt;String, Long&gt; name2Barrier : MetaTableAccessor<a name="line.182"></a>
-<span class="sourceLineNo">183</span>            .getTableEncodedRegionNameAndLastBarrier(conn, td.getTableName())) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>            addToMap(lastSeqIds, name2Barrier.getFirst(), name2Barrier.getSecond().longValue() - 1,<a name="line.184"></a>
-<span class="sourceLineNo">185</span>              queueStorage);<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        } else {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          for (RegionInfo region : regionStates.getRegionsOfTable(td.getTableName(), true)) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>            long maxSequenceId =<a name="line.189"></a>
-<span class="sourceLineNo">190</span>              WALSplitter.getMaxRegionSequenceId(mfs.getFileSystem(), mfs.getRegionDir(region));<a name="line.190"></a>
-<span class="sourceLineNo">191</span>            addToMap(lastSeqIds, region.getEncodedName(), maxSequenceId, queueStorage);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>          }<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        }<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      } catch (IOException | ReplicationException e) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        throw new RuntimeException(e);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      }<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    });<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    if (!lastSeqIds.isEmpty()) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      queueStorage.setLastSequenceIds(peerId, lastSeqIds);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
-<span class="sourceLineNo">201</span>  }<a name="line.201"></a>
-<span class="sourceLineNo">202</span><a name="line.202"></a>
-<span class="sourceLineNo">203</span>  @Override<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  protected Flow executeFromState(MasterProcedureEnv env, PeerModificationState state)<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      throws ProcedureSuspendedException, ProcedureYieldException, InterruptedException {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    switch (state) {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      case PRE_PEER_MODIFICATION:<a name="line.207"></a>
-<span class="sourceLineNo">208</span>        try {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>          prePeerModification(env);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        } catch (IOException e) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>          LOG.warn("{} failed to call pre CP hook or the pre check is failed for peer {}, " +<a name="line.211"></a>
-<span class="sourceLineNo">212</span>            "mark the procedure as failure and give up", getClass().getName(), peerId, e);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          setFailure("master-" + getPeerOperationType().name().toLowerCase() + "-peer", e);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>          releaseLatch();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>          return Flow.NO_MORE_STATE;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>        } catch (ReplicationException e) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>          LOG.warn("{} failed to call prePeerModification for peer {}, retry", getClass().getName(),<a name="line.217"></a>
-<span class="sourceLineNo">218</span>            peerId, e);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>          throw new ProcedureYieldException();<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        }<a name="line.220"></a>
-<span class="sourceLineNo">221</span>        setNextState(PeerModificationState.UPDATE_PEER_STORAGE);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        return Flow.HAS_MORE_STATE;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      case UPDATE_PEER_STORAGE:<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        try {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>          updatePeerStorage(env);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>        } catch (ReplicationException e) {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>          LOG.warn("{} update peer storage for peer {} failed, retry", getClass().getName(), peerId,<a name="line.227"></a>
-<span class="sourceLineNo">228</span>            e);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>          throw new ProcedureYieldException();<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        }<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        setNextState(PeerModificationState.REFRESH_PEER_ON_RS);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        return Flow.HAS_MORE_STATE;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      case REFRESH_PEER_ON_RS:<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        refreshPeer(env, getPeerOperationType());<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        setNextState(reopenRegionsAfterRefresh() ? PeerModificationState.SERIAL_PEER_REOPEN_REGIONS<a name="line.235"></a>
-<span class="sourceLineNo">236</span>          : PeerModificationState.POST_PEER_MODIFICATION);<a name="line.236"></a>
+<span class="sourceLineNo">132</span>    TableStateManager tsm = env.getMasterServices().getTableStateManager();<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    for (TableDescriptor td : env.getMasterServices().getTableDescriptors().getAll().values()) {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      if (!td.hasGlobalReplicationScope()) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>        continue;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      }<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      TableName tn = td.getTableName();<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      if (!ReplicationUtils.contains(peerConfig, tn)) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        continue;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      }<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      if (oldPeerConfig != null &amp;&amp; oldPeerConfig.isSerial() &amp;&amp;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>        ReplicationUtils.contains(oldPeerConfig, tn)) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        continue;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      }<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      try {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>        if (!tsm.getTableState(tn).isEnabled()) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>          continue;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      } catch (TableStateNotFoundException e) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        continue;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      }<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      addChildProcedure(env.getAssignmentManager().createReopenProcedures(<a name="line.152"></a>
+<span class="sourceLineNo">153</span>        env.getAssignmentManager().getRegionStates().getRegionsOfTable(tn)));<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    }<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  }<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>  private void addToMap(Map&lt;String, Long&gt; lastSeqIds, String encodedRegionName, long barrier,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      ReplicationQueueStorage queueStorage) throws ReplicationException {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    if (barrier &gt;= 0) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      lastSeqIds.put(encodedRegionName, barrier);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      if (lastSeqIds.size() &gt;= UPDATE_LAST_SEQ_ID_BATCH_SIZE) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>        queueStorage.setLastSequenceIds(peerId, lastSeqIds);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        lastSeqIds.clear();<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      }<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  }<a name="line.166"></a>
+<span class="sourceLineNo">167</span><a name="line.167"></a>
+<span class="sourceLineNo">168</span>  protected final void setLastPushedSequenceId(MasterProcedureEnv env,<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      ReplicationPeerConfig peerConfig) throws IOException, ReplicationException {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    Map&lt;String, Long&gt; lastSeqIds = new HashMap&lt;String, Long&gt;();<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    for (TableDescriptor td : env.getMasterServices().getTableDescriptors().getAll().values()) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      if (!td.hasGlobalReplicationScope()) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        continue;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      }<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      TableName tn = td.getTableName();<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      if (!ReplicationUtils.contains(peerConfig, tn)) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        continue;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      }<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      setLastPushedSequenceIdForTable(env, tn, lastSeqIds);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    if (!lastSeqIds.isEmpty()) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      env.getReplicationPeerManager().getQueueStorage().setLastSequenceIds(peerId, lastSeqIds);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    }<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  // Will put the encodedRegionName-&gt;lastPushedSeqId pair into the map passed in, if the map is<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  // large enough we will call queueStorage.setLastSequenceIds and clear the map. So the caller<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  // should not forget to check whether the map is empty at last, if not you should call<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  // queueStorage.setLastSequenceIds to write out the remaining entries in the map.<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  protected final void setLastPushedSequenceIdForTable(MasterProcedureEnv env, TableName tableName,<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      Map&lt;String, Long&gt; lastSeqIds) throws IOException, ReplicationException {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    TableStateManager tsm = env.getMasterServices().getTableStateManager();<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    ReplicationQueueStorage queueStorage = env.getReplicationPeerManager().getQueueStorage();<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    Connection conn = env.getMasterServices().getConnection();<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    RegionStates regionStates = env.getAssignmentManager().getRegionStates();<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    MasterFileSystem mfs = env.getMasterServices().getMasterFileSystem();<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    boolean isTableEnabled;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    try {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      isTableEnabled = tsm.getTableState(tableName).isEnabled();<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    } catch (TableStateNotFoundException e) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      return;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    if (isTableEnabled) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      for (Pair&lt;String, Long&gt; name2Barrier : MetaTableAccessor<a name="line.204"></a>
+<span class="sourceLineNo">205</span>        .getTableEncodedRegionNameAndLastBarrier(conn, tableName)) {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>        addToMap(lastSeqIds, name2Barrier.getFirst(), name2Barrier.getSecond().longValue() - 1,<a name="line.206"></a>
+<span class="sourceLineNo">207</span>          queueStorage);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      }<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    } else {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      for (RegionInfo region : regionStates.getRegionsOfTable(tableName, true)) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        long maxSequenceId =<a name="line.211"></a>
+<span class="sourceLineNo">212</span>          WALSplitter.getMaxRegionSequenceId(mfs.getFileSystem(), mfs.getRegionDir(region));<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        addToMap(lastSeqIds, region.getEncodedName(), maxSequenceId, queueStorage);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      }<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
+<span class="sourceLineNo">216</span>  }<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
+<span class="sourceLineNo">218</span>  @Override<a name="line.218"></a>
+<span class="sourceLineNo">219</span>  protected Flow executeFromState(MasterProcedureEnv env, PeerModificationState state)<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      throws ProcedureSuspendedException, ProcedureYieldException, InterruptedException {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    switch (state) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      case PRE_PEER_MODIFICATION:<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        try {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>          prePeerModification(env);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        } catch (IOException e) {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>          LOG.warn("{} failed to call pre CP hook or the pre check is failed for peer {}, " +<a name="line.226"></a>
+<span class="sourceLineNo">227</span>            "mark the procedure as failure and give up", getClass().getName(), peerId, e);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>          setFailure("master-" + getPeerOperationType().name().toLowerCase() + "-peer", e);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>          releaseLatch();<a name="line.229"></a>
+<span class="sourceLineNo">230</span>          return Flow.NO_MORE_STATE;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        } catch (ReplicationException e) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>          LOG.warn("{} failed to call prePeerModification for peer {}, retry", getClass().getName(),<a name="line.232"></a>
+<span class="sourceLineNo">233</span>            peerId, e);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>          throw new ProcedureYieldException();<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        }<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        setNextState(PeerModificationState.UPDATE_PEER_STORAGE);<a name="line.236"></a>
 <span class="sourceLineNo">237</span>        return Flow.HAS_MORE_STATE;<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      case SERIAL_PEER_REOPEN_REGIONS:<a name="line.238"></a>
+<span class="sourceLineNo">238</span>      case UPDATE_PEER_STORAGE:<a name="line.238"></a>
 <span class="sourceLineNo">239</span>        try {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          reopenRegions(env);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        } catch (Exception e) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>          LOG.warn("{} reopen regions for peer {} failed, retry", getClass().getName(), peerId, e);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>          throw new ProcedureYieldException();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        }<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        setNextState(PeerModificationState.SERIAL_PEER_UPDATE_LAST_PUSHED_SEQ_ID);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>        return Flow.HAS_MORE_STATE;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      case SERIAL_PEER_UPDATE_LAST_PUSHED_SEQ_ID:<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        try {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>          setLastSequenceIdForSerialPeer(env);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>        } catch (Exception e) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>          LOG.warn("{} set last sequence id for peer {} failed, retry", getClass().getName(),<a name="line.251"></a>
-<span class="sourceLineNo">252</span>            peerId, e);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          throw new ProcedureYieldException();<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        }<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        setNextState(enablePeerBeforeFinish() ? PeerModificationState.SERIAL_PEER_SET_PEER_ENABLED<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          : PeerModificationState.POST_PEER_MODIFICATION);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        return Flow.HAS_MORE_STATE;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      case SERIAL_PEER_SET_PEER_ENABLED:<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        try {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>          env.getReplicationPeerManager().enablePeer(peerId);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        } catch (ReplicationException e) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>          LOG.warn("{} enable peer before finish for peer {} failed, retry", getClass().getName(),<a name="line.262"></a>
-<span class="sourceLineNo">263</span>            peerId, e);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>          throw new ProcedureYieldException();<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        }<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        setNextState(PeerModificationState.SERIAL_PEER_ENABLE_PEER_REFRESH_PEER_ON_RS);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        return Flow.HAS_MORE_STATE;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      case SERIAL_PEER_ENABLE_PEER_REFRESH_PEER_ON_RS:<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        refreshPeer(env, PeerOperationType.ENABLE);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        setNextState(PeerModificationState.POST_PEER_MODIFICATION);<a name="line.270"></a>
+<span class="sourceLineNo">240</span>          updatePeerStorage(env);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        } catch (ReplicationException e) {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          LOG.warn("{} update peer storage for peer {} failed, retry", getClass().getName(), peerId,<a name="line.242"></a>
+<span class="sourceLineNo">243</span>            e);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          throw new ProcedureYieldException();<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        }<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        setNextState(PeerModificationState.REFRESH_PEER_ON_RS);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        return Flow.HAS_MORE_STATE;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      case REFRESH_PEER_ON_RS:<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        refreshPeer(env, getPeerOperationType());<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        setNextState(nextStateAfterRefresh());<a name="line.250"></a>
+<span class="sourceLineNo">251</span>        return Flow.HAS_MORE_STATE;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      case SERIAL_PEER_REOPEN_REGIONS:<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        try {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>          reopenRegions(env);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        } catch (Exception e) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>          LOG.warn("{} reopen regions for peer {} failed, retry", getClass().getName(), peerId, e);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>          throw new ProcedureYieldException();<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        }<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        setNextState(PeerModificationState.SERIAL_PEER_UPDATE_LAST_PUSHED_SEQ_ID);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        return Flow.HAS_MORE_STATE;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      case SERIAL_PEER_UPDATE_LAST_PUSHED_SEQ_ID:<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        try {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          updateLastPushedSequenceIdForSerialPeer(env);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        } catch (Exception e) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          LOG.warn("{} set last sequence id for peer {} failed, retry", getClass().getName(),<a name="line.265"></a>
+<span class="sourceLineNo">266</span>            peerId, e);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          throw new ProcedureYieldException();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        }<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        setNextState(enablePeerBeforeFinish() ? PeerModificationState.SERIAL_PEER_SET_PEER_ENABLED<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          : PeerModificationState.POST_PEER_MODIFICATION);<a name="line.270"></a>
 <span class="sourceLineNo">271</span>        return Flow.HAS_MORE_STATE;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      case POST_PEER_MODIFICATION:<a name="line.272"></a>
+<span class="sourceLineNo">272</span>      case SERIAL_PEER_SET_PEER_ENABLED:<a name="line.272"></a>
 <span class="sourceLineNo">273</span>        try {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>          postPeerModification(env);<a name="line.274"></a>
+<span class="sourceLineNo">274</span>          env.getReplicationPeerManager().enablePeer(peerId);<a name="line.274"></a>
 <span class="sourceLineNo">275</span>        } catch (ReplicationException e) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>          LOG.warn("{} failed to call postPeerModification for peer {}, retry",<a name="line.276"></a>
-<span class="sourceLineNo">277</span>            getClass().getName(), peerId, e);<a name="line.277"></a>
+<span class="sourceLineNo">276</span>          LOG.warn("{} enable peer before finish for peer {} failed, retry", getClass().getName(),<a name="line.276"></a>
+<span class="sourceLineNo">277</span>            peerId, e);<a name="line.277"></a>
 <span class="sourceLineNo">278</span>          throw new ProcedureYieldException();<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        } catch (IOException e) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          LOG.warn("{} failed to call post CP hook for peer {}, " +<a name="line.280"></a>
-<span class="sourceLineNo">281</span>            "ignore since the procedure has already done", getClass().getName(), peerId, e);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        }<a name="line.282"></a>
-<span class="sourceLineNo">283</span>        releaseLatch();<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        return Flow.NO_MORE_STATE;<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      default:<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        throw new UnsupportedOperationException("unhandled state=" + state);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    }<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  }<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>  @Override<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  protected void rollbackState(MasterProcedureEnv env, PeerModificationState state)<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      throws IOException, InterruptedException {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    if (state == PeerModificationState.PRE_PEER_MODIFICATION) {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      // actually the peer related operations has no rollback, but if we haven't done any<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      // modifications on the peer storage yet, we can just return.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      return;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    throw new UnsupportedOperationException();<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  }<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>  @Override<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  protected PeerModificationState getState(int stateId) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    return PeerModificationState.forNumber(stateId);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  }<a name="line.304"></a>
-<span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span>  @Override<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  protected int getStateId(PeerModificationState state) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    return state.getNumber();<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>  @Override<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  protected PeerModificationState getInitialState() {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    return PeerModificationState.PRE_PEER_MODIFICATION;<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span>}<a name="line.315"></a>
+<span class="sourceLineNo">279</span>        }<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        setNextState(PeerModificationState.SERIAL_PEER_ENABLE_PEER_REFRESH_PEER_ON_RS);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        return Flow.HAS_MORE_STATE;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      case SERIAL_PEER_ENABLE_PEER_REFRESH_PEER_ON_RS:<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        refreshPeer(env, PeerOperationType.ENABLE);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>        setNextState(PeerModificationState.POST_PEER_MODIFICATION);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        return Flow.HAS_MORE_STATE;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      case POST_PEER_MODIFICATION:<a name="line.286"></a>
+<span class="sourceLineNo">287</span>        try {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          postPeerModification(env);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        } catch (ReplicationException e) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>          LOG.warn("{} failed to call postPeerModification for peer {}, retry",<a name="line.290"></a>
+<span class="sourceLineNo">291</span>            getClass().getName(), peerId, e);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          throw new ProcedureYieldException();<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        } catch (IOException e) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>          LOG.warn("{} failed to call post CP hook for peer {}, " +<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            "ignore since the procedure has already done", getClass().getName(), peerId, e);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        }<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        releaseLatch();<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        return Flow.NO_MORE_STATE;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      default:<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        throw new UnsupportedOperationException("unhandled state=" + state);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  }<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>  @Override<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  protected void rollbackState(MasterProcedureEnv env, PeerModificationState state)<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      throws IOException, InterruptedException {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    if (state == PeerModificationState.PRE_PEER_MODIFICATION) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      // actually the peer related operations has no rollback, but if we haven't done any<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      // modifications on the peer storage yet, we can just return.<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      return;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    throw new UnsupportedOperationException();<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>  @Override<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  protected PeerModificationState getState(int stateId) {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    return PeerModificationState.forNumber(stateId);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>  @Override<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  protected int getStateId(PeerModificationState state) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    return state.getNumber();<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  }<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>  @Override<a name="line.325"></a>
+<span class="sourceLineNo">326</span>  protected PeerModificationState getInitialState() {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    return PeerModificationState.PRE_PEER_MODIFICATION;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  }<a name="line.328"></a>
+<span class="sourceLineNo">329</span>}<a name="line.329"></a>
 
 
 


[08/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.TableVisitorBase.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.TableVisitorBase.html b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.TableVisitorBase.html
index 6007f27..4ce6735 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.TableVisitorBase.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.TableVisitorBase.html
@@ -65,716 +65,716 @@
 <span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Table;<a name="line.57"></a>
 <span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.58"></a>
 <span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsResponse;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.slf4j.Logger;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.slf4j.LoggerFactory;<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.79"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsResponse;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.slf4j.Logger;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.slf4j.LoggerFactory;<a name="line.79"></a>
 <span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>/**<a name="line.81"></a>
-<span class="sourceLineNo">082</span> * &lt;p&gt;<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * Read/write operations on region and assignment information store in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * &lt;/p&gt;<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * &lt;p&gt;<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * Some of the methods of this class take ZooKeeperWatcher as a param. The only reason for this is<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * because when used on client-side (like from HBaseAdmin), we want to use short-living connection<a name="line.87"></a>
-<span class="sourceLineNo">088</span> * (opened before each operation, closed right after), while when used on HM or HRS (like in<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * AssignmentManager) we want permanent connection.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * &lt;/p&gt;<a name="line.90"></a>
-<span class="sourceLineNo">091</span> * &lt;p&gt;<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * HBASE-10070 adds a replicaId to HRI, meaning more than one HRI can be defined for the same table<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * range (table, startKey, endKey). For every range, there will be at least one HRI defined which is<a name="line.93"></a>
-<span class="sourceLineNo">094</span> * called default replica.<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * &lt;/p&gt;<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * &lt;p&gt;<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * Meta layout (as of 0.98 + HBASE-10070) is like:<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * &lt;pre&gt;<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * For each table there is single row in column family 'table' formatted:<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * &amp;lt;tableName&amp;gt; including namespace and columns are:<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * table: state             =&gt; contains table state<a name="line.102"></a>
-<span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * For each table range, there is a single row, formatted like:<a name="line.104"></a>
-<span class="sourceLineNo">105</span> * &amp;lt;tableName&amp;gt;,&amp;lt;startKey&amp;gt;,&amp;lt;regionId&amp;gt;,&amp;lt;encodedRegionName&amp;gt;.<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * This row corresponds to the regionName of the default region replica.<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Columns are:<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * info:regioninfo         =&gt; contains serialized HRI for the default region replica<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * info:server             =&gt; contains hostname:port (in string form) for the server hosting<a name="line.109"></a>
-<span class="sourceLineNo">110</span> *                            the default regionInfo replica<a name="line.110"></a>
-<span class="sourceLineNo">111</span> * info:server_&amp;lt;replicaId&amp;gt =&gt; contains hostname:port (in string form) for the server hosting<a name="line.111"></a>
-<span class="sourceLineNo">112</span> *                                 the regionInfo replica with replicaId<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * info:serverstartcode    =&gt; contains server start code (in binary long form) for the server<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *                            hosting the default regionInfo replica<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * info:serverstartcode_&amp;lt;replicaId&amp;gt =&gt; contains server start code (in binary long form) for<a name="line.115"></a>
-<span class="sourceLineNo">116</span> *                                          the server hosting the regionInfo replica with<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *                                          replicaId<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * info:seqnumDuringOpen   =&gt; contains seqNum (in binary long form) for the region at the time<a name="line.118"></a>
-<span class="sourceLineNo">119</span> *                             the server opened the region with default replicaId<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * info:seqnumDuringOpen_&amp;lt;replicaId&amp;gt =&gt; contains seqNum (in binary long form) for the region<a name="line.120"></a>
-<span class="sourceLineNo">121</span> *                                           at the time the server opened the region with<a name="line.121"></a>
-<span class="sourceLineNo">122</span> *                                           replicaId<a name="line.122"></a>
-<span class="sourceLineNo">123</span> * info:splitA             =&gt; contains a serialized HRI for the first daughter region if the<a name="line.123"></a>
-<span class="sourceLineNo">124</span> *                             region is split<a name="line.124"></a>
-<span class="sourceLineNo">125</span> * info:splitB             =&gt; contains a serialized HRI for the second daughter region if the<a name="line.125"></a>
+<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>/**<a name="line.83"></a>
+<span class="sourceLineNo">084</span> * &lt;p&gt;<a name="line.84"></a>
+<span class="sourceLineNo">085</span> * Read/write operations on region and assignment information store in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * &lt;/p&gt;<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * &lt;p&gt;<a name="line.87"></a>
+<span class="sourceLineNo">088</span> * Some of the methods of this class take ZooKeeperWatcher as a param. The only reason for this is<a name="line.88"></a>
+<span class="sourceLineNo">089</span> * because when used on client-side (like from HBaseAdmin), we want to use short-living connection<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * (opened before each operation, closed right after), while when used on HM or HRS (like in<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * AssignmentManager) we want permanent connection.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * &lt;/p&gt;<a name="line.92"></a>
+<span class="sourceLineNo">093</span> * &lt;p&gt;<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * HBASE-10070 adds a replicaId to HRI, meaning more than one HRI can be defined for the same table<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * range (table, startKey, endKey). For every range, there will be at least one HRI defined which is<a name="line.95"></a>
+<span class="sourceLineNo">096</span> * called default replica.<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * &lt;/p&gt;<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * &lt;p&gt;<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * Meta layout (as of 0.98 + HBASE-10070) is like:<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * &lt;pre&gt;<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * For each table there is single row in column family 'table' formatted:<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * &amp;lt;tableName&amp;gt; including namespace and columns are:<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * table: state             =&gt; contains table state<a name="line.104"></a>
+<span class="sourceLineNo">105</span> *<a name="line.105"></a>
+<span class="sourceLineNo">106</span> * For each table range, there is a single row, formatted like:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * &amp;lt;tableName&amp;gt;,&amp;lt;startKey&amp;gt;,&amp;lt;regionId&amp;gt;,&amp;lt;encodedRegionName&amp;gt;.<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * This row corresponds to the regionName of the default region replica.<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * Columns are:<a name="line.109"></a>
+<span class="sourceLineNo">110</span> * info:regioninfo         =&gt; contains serialized HRI for the default region replica<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * info:server             =&gt; contains hostname:port (in string form) for the server hosting<a name="line.111"></a>
+<span class="sourceLineNo">112</span> *                            the default regionInfo replica<a name="line.112"></a>
+<span class="sourceLineNo">113</span> * info:server_&amp;lt;replicaId&amp;gt =&gt; contains hostname:port (in string form) for the server hosting<a name="line.113"></a>
+<span class="sourceLineNo">114</span> *                                 the regionInfo replica with replicaId<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * info:serverstartcode    =&gt; contains server start code (in binary long form) for the server<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *                            hosting the default regionInfo replica<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * info:serverstartcode_&amp;lt;replicaId&amp;gt =&gt; contains server start code (in binary long form) for<a name="line.117"></a>
+<span class="sourceLineNo">118</span> *                                          the server hosting the regionInfo replica with<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *                                          replicaId<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * info:seqnumDuringOpen   =&gt; contains seqNum (in binary long form) for the region at the time<a name="line.120"></a>
+<span class="sourceLineNo">121</span> *                             the server opened the region with default replicaId<a name="line.121"></a>
+<span class="sourceLineNo">122</span> * info:seqnumDuringOpen_&amp;lt;replicaId&amp;gt =&gt; contains seqNum (in binary long form) for the region<a name="line.122"></a>
+<span class="sourceLineNo">123</span> *                                           at the time the server opened the region with<a name="line.123"></a>
+<span class="sourceLineNo">124</span> *                                           replicaId<a name="line.124"></a>
+<span class="sourceLineNo">125</span> * info:splitA             =&gt; contains a serialized HRI for the first daughter region if the<a name="line.125"></a>
 <span class="sourceLineNo">126</span> *                             region is split<a name="line.126"></a>
-<span class="sourceLineNo">127</span> * info:mergeA             =&gt; contains a serialized HRI for the first parent region if the<a name="line.127"></a>
-<span class="sourceLineNo">128</span> *                             region is the result of a merge<a name="line.128"></a>
-<span class="sourceLineNo">129</span> * info:mergeB             =&gt; contains a serialized HRI for the second parent region if the<a name="line.129"></a>
+<span class="sourceLineNo">127</span> * info:splitB             =&gt; contains a serialized HRI for the second daughter region if the<a name="line.127"></a>
+<span class="sourceLineNo">128</span> *                             region is split<a name="line.128"></a>
+<span class="sourceLineNo">129</span> * info:mergeA             =&gt; contains a serialized HRI for the first parent region if the<a name="line.129"></a>
 <span class="sourceLineNo">130</span> *                             region is the result of a merge<a name="line.130"></a>
-<span class="sourceLineNo">131</span> * &lt;/pre&gt;<a name="line.131"></a>
-<span class="sourceLineNo">132</span> * &lt;/p&gt;<a name="line.132"></a>
-<span class="sourceLineNo">133</span> * &lt;p&gt;<a name="line.133"></a>
-<span class="sourceLineNo">134</span> * The actual layout of meta should be encapsulated inside MetaTableAccessor methods, and should not<a name="line.134"></a>
-<span class="sourceLineNo">135</span> * leak out of it (through Result objects, etc)<a name="line.135"></a>
-<span class="sourceLineNo">136</span> * &lt;/p&gt;<a name="line.136"></a>
-<span class="sourceLineNo">137</span> */<a name="line.137"></a>
-<span class="sourceLineNo">138</span>@InterfaceAudience.Private<a name="line.138"></a>
-<span class="sourceLineNo">139</span>public class MetaTableAccessor {<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static final Logger LOG = LoggerFactory.getLogger(MetaTableAccessor.class);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static final Logger METALOG = LoggerFactory.getLogger("org.apache.hadoop.hbase.META");<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static final byte[] META_REGION_PREFIX;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  static {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    // Copy the prefix from FIRST_META_REGIONINFO into META_REGION_PREFIX.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    // FIRST_META_REGIONINFO == 'hbase:meta,,1'.  META_REGION_PREFIX == 'hbase:meta,'<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    int len = RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName().length - 2;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    META_REGION_PREFIX = new byte [len];<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    System.arraycopy(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName(), 0,<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      META_REGION_PREFIX, 0, len);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>  @VisibleForTesting<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  public static final byte[] REPLICATION_PARENT_QUALIFIER = Bytes.toBytes("parent");<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  private static final byte ESCAPE_BYTE = (byte) 0xFF;<a name="line.157"></a>
+<span class="sourceLineNo">131</span> * info:mergeB             =&gt; contains a serialized HRI for the second parent region if the<a name="line.131"></a>
+<span class="sourceLineNo">132</span> *                             region is the result of a merge<a name="line.132"></a>
+<span class="sourceLineNo">133</span> * &lt;/pre&gt;<a name="line.133"></a>
+<span class="sourceLineNo">134</span> * &lt;/p&gt;<a name="line.134"></a>
+<span class="sourceLineNo">135</span> * &lt;p&gt;<a name="line.135"></a>
+<span class="sourceLineNo">136</span> * The actual layout of meta should be encapsulated inside MetaTableAccessor methods, and should not<a name="line.136"></a>
+<span class="sourceLineNo">137</span> * leak out of it (through Result objects, etc)<a name="line.137"></a>
+<span class="sourceLineNo">138</span> * &lt;/p&gt;<a name="line.138"></a>
+<span class="sourceLineNo">139</span> */<a name="line.139"></a>
+<span class="sourceLineNo">140</span>@InterfaceAudience.Private<a name="line.140"></a>
+<span class="sourceLineNo">141</span>public class MetaTableAccessor {<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static final Logger LOG = LoggerFactory.getLogger(MetaTableAccessor.class);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static final Logger METALOG = LoggerFactory.getLogger("org.apache.hadoop.hbase.META");<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static final byte[] META_REGION_PREFIX;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  static {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    // Copy the prefix from FIRST_META_REGIONINFO into META_REGION_PREFIX.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    // FIRST_META_REGIONINFO == 'hbase:meta,,1'.  META_REGION_PREFIX == 'hbase:meta,'<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    int len = RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName().length - 2;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    META_REGION_PREFIX = new byte [len];<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    System.arraycopy(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName(), 0,<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      META_REGION_PREFIX, 0, len);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  }<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span>  @VisibleForTesting<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  public static final byte[] REPLICATION_PARENT_QUALIFIER = Bytes.toBytes("parent");<a name="line.157"></a>
 <span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  private static final byte SEPARATED_BYTE = 0x00;<a name="line.159"></a>
+<span class="sourceLineNo">159</span>  private static final byte ESCAPE_BYTE = (byte) 0xFF;<a name="line.159"></a>
 <span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  /**<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * Lists all of the table regions currently in META.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * Deprecated, keep there until some test use this.<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * @param connection what we will use<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * @param tableName table to list<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @return Map of all user-space regions to servers<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * @deprecated use {@link #getTableRegionsAndLocations}, region can have multiple locations<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   */<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  @Deprecated<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  public static NavigableMap&lt;RegionInfo, ServerName&gt; allTableRegions(<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      Connection connection, final TableName tableName) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    final NavigableMap&lt;RegionInfo, ServerName&gt; regions = new TreeMap&lt;&gt;();<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    Visitor visitor = new TableVisitorBase(tableName) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      public boolean visitInternal(Result result) throws IOException {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        RegionLocations locations = getRegionLocations(result);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>        if (locations == null) return true;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        for (HRegionLocation loc : locations.getRegionLocations()) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          if (loc != null) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>            RegionInfo regionInfo = loc.getRegionInfo();<a name="line.180"></a>
-<span class="sourceLineNo">181</span>            regions.put(regionInfo, loc.getServerName());<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>        return true;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    };<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    scanMetaForTableRegions(connection, visitor, tableName);<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    return regions;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>  @InterfaceAudience.Private<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  public enum QueryType {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    ALL(HConstants.TABLE_FAMILY, HConstants.CATALOG_FAMILY),<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    REGION(HConstants.CATALOG_FAMILY),<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    TABLE(HConstants.TABLE_FAMILY),<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    REPLICATION(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>    private final byte[][] families;<a name="line.198"></a>
+<span class="sourceLineNo">161</span>  private static final byte SEPARATED_BYTE = 0x00;<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  /**<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   * Lists all of the table regions currently in META.<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * Deprecated, keep there until some test use this.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * @param connection what we will use<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * @param tableName table to list<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * @return Map of all user-space regions to servers<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * @deprecated use {@link #getTableRegionsAndLocations}, region can have multiple locations<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  @Deprecated<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public static NavigableMap&lt;RegionInfo, ServerName&gt; allTableRegions(<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      Connection connection, final TableName tableName) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    final NavigableMap&lt;RegionInfo, ServerName&gt; regions = new TreeMap&lt;&gt;();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    Visitor visitor = new TableVisitorBase(tableName) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      @Override<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      public boolean visitInternal(Result result) throws IOException {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        RegionLocations locations = getRegionLocations(result);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        if (locations == null) return true;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        for (HRegionLocation loc : locations.getRegionLocations()) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          if (loc != null) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            RegionInfo regionInfo = loc.getRegionInfo();<a name="line.182"></a>
+<span class="sourceLineNo">183</span>            regions.put(regionInfo, loc.getServerName());<a name="line.183"></a>
+<span class="sourceLineNo">184</span>          }<a name="line.184"></a>
+<span class="sourceLineNo">185</span>        }<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        return true;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    };<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    scanMetaForTableRegions(connection, visitor, tableName);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    return regions;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  @InterfaceAudience.Private<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  public enum QueryType {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    ALL(HConstants.TABLE_FAMILY, HConstants.CATALOG_FAMILY),<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    REGION(HConstants.CATALOG_FAMILY),<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    TABLE(HConstants.TABLE_FAMILY),<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    REPLICATION(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.198"></a>
 <span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>    QueryType(byte[]... families) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      this.families = families;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span>    byte[][] getFamilies() {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return this.families;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private static final Pattern SERVER_COLUMN_PATTERN<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    = Pattern.compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  ////////////////////////<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  // Reading operations //<a name="line.217"></a>
+<span class="sourceLineNo">200</span>    private final byte[][] families;<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    QueryType(byte[]... families) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      this.families = families;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>    byte[][] getFamilies() {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      return this.families;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    }<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  private static final Pattern SERVER_COLUMN_PATTERN<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    = Pattern.compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
 <span class="sourceLineNo">218</span>  ////////////////////////<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>  /**<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   * @param connection connection we're using<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * @param visitor Visitor invoked against each row in regions family.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  public static void fullScanRegions(Connection connection,<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      final Visitor visitor)<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      throws IOException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    scanMeta(connection, null, null, QueryType.REGION, visitor);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  /**<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   * @param connection connection we're using<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public static List&lt;Result&gt; fullScanRegions(Connection connection)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      throws IOException {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    return fullScan(connection, QueryType.REGION);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  /**<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for tables.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   * @param connection connection we're using<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * @param visitor Visitor invoked against each row in tables family.<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  public static void fullScanTables(Connection connection,<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      final Visitor visitor)<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      throws IOException {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    scanMeta(connection, null, null, QueryType.TABLE, visitor);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>  /**<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   * @param connection connection we're using<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   * @param type scanned part of meta<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * @return List of {@link Result}<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  public static List&lt;Result&gt; fullScan(Connection connection, QueryType type)<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    throws IOException {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    CollectAllVisitor v = new CollectAllVisitor();<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    scanMeta(connection, null, null, type, v);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return v.getResults();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>  /**<a name="line.264"></a>
-<span class="sourceLineNo">265</span>   * Callers should call close on the returned {@link Table} instance.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>   * @param connection connection we're using to access Meta<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   * @return An {@link Table} for &lt;code&gt;hbase:meta&lt;/code&gt;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   */<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  public static Table getMetaHTable(final Connection connection)<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  throws IOException {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // We used to pass whole CatalogTracker in here, now we just pass in Connection<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    if (connection == null) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      throw new NullPointerException("No connection");<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    } else if (connection.isClosed()) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      throw new IOException("connection is closed");<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return connection.getTable(TableName.META_TABLE_NAME);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>  /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * @param t Table to use (will be closed when done).<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   * @param g Get to run<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   */<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  private static Result get(final Table t, final Get g) throws IOException {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    if (t == null) return null;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    try {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      return t.get(g);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    } finally {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      t.close();<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    }<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  /**<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * Gets the region info and assignment for the specified region.<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @param connection connection we're using<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * @param regionName Region to lookup.<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   * @return Location and RegionInfo for &lt;code&gt;regionName&lt;/code&gt;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>   * @deprecated use {@link #getRegionLocation(Connection, byte[])} instead<a name="line.298"></a>
-<span class="sourceLineNo">299</span>   */<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  @Deprecated<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  public static Pair&lt;RegionInfo, ServerName&gt; getRegion(Connection connection, byte [] regionName)<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    throws IOException {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    HRegionLocation location = getRegionLocation(connection, regionName);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    return location == null<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      ? null<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      : new Pair&lt;&gt;(location.getRegionInfo(), location.getServerName());<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  /**<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * Returns the HRegionLocation from meta for the given region<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * @param connection connection we're using<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * @param regionName region we're looking for<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * @return HRegionLocation for the given region<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public static HRegionLocation getRegionLocation(Connection connection, byte[] regionName)<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      throws IOException {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    byte[] row = regionName;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    RegionInfo parsedInfo = null;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    try {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      parsedInfo = parseRegionInfoFromRegionName(regionName);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      row = getMetaKeyForRegion(parsedInfo);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    } catch (Exception parseEx) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      // Ignore. This is used with tableName passed as regionName.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    Get get = new Get(row);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    Result r = get(getMetaHTable(connection), get);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    RegionLocations locations = getRegionLocations(r);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    return locations == null ? null<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      : locations.getRegionLocation(parsedInfo == null ? 0 : parsedInfo.getReplicaId());<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  /**<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * Returns the HRegionLocation from meta for the given region<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * @param connection connection we're using<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   * @param regionInfo region information<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * @return HRegionLocation for the given region<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   */<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static HRegionLocation getRegionLocation(Connection connection, RegionInfo regionInfo)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      throws IOException {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    byte[] row = getMetaKeyForRegion(regionInfo);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    Get get = new Get(row);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    Result r = get(getMetaHTable(connection), get);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    return getRegionLocation(r, regionInfo, regionInfo.getReplicaId());<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>  /** Returns the row key to use for this regionInfo */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public static byte[] getMetaKeyForRegion(RegionInfo regionInfo) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    return RegionReplicaUtil.getRegionInfoForDefaultReplica(regionInfo).getRegionName();<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /** Returns an HRI parsed from this regionName. Not all the fields of the HRI<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * is stored in the name, so the returned object should only be used for the fields<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * in the regionName.<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  public static RegionInfo parseRegionInfoFromRegionName(byte[] regionName) throws IOException {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    byte[][] fields = RegionInfo.parseRegionName(regionName);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    long regionId = Long.parseLong(Bytes.toString(fields[2]));<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    int replicaId = fields.length &gt; 3 ? Integer.parseInt(Bytes.toString(fields[3]), 16) : 0;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    return RegionInfoBuilder.newBuilder(TableName.valueOf(fields[0]))<a name="line.361"></a>
-<span class="sourceLineNo">362</span>              .setStartKey(fields[1])<a name="line.362"></a>
-<span class="sourceLineNo">363</span>              .setEndKey(fields[2])<a name="line.363"></a>
-<span class="sourceLineNo">364</span>              .setSplit(false)<a name="line.364"></a>
-<span class="sourceLineNo">365</span>              .setRegionId(regionId)<a name="line.365"></a>
-<span class="sourceLineNo">366</span>              .setReplicaId(replicaId)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>              .build();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * Gets the result in hbase:meta for the specified region.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * @param connection connection we're using<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * @param regionName region we're looking for<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * @return result of the specified region<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   */<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  public static Result getRegionResult(Connection connection,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      byte[] regionName) throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    Get get = new Get(regionName);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    return get(getMetaHTable(connection), get);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span>  /**<a name="line.383"></a>
-<span class="sourceLineNo">384</span>   * Get regions from the merge qualifier of the specified merged region<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * @return null if it doesn't contain merge qualifier, else two merge regions<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   */<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Nullable<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public static Pair&lt;RegionInfo, RegionInfo&gt; getRegionsFromMergeQualifier(<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      Connection connection, byte[] regionName) throws IOException {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    Result result = getRegionResult(connection, regionName);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    RegionInfo mergeA = getRegionInfo(result, HConstants.MERGEA_QUALIFIER);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    RegionInfo mergeB = getRegionInfo(result, HConstants.MERGEB_QUALIFIER);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    if (mergeA == null &amp;&amp; mergeB == null) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      return null;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    return new Pair&lt;&gt;(mergeA, mergeB);<a name="line.396"></a>
-<span class="sourceLineNo">397</span> }<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  /**<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * Checks if the specified table exists.  Looks at the hbase:meta table hosted on<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * the specified server.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param connection connection we're using<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param tableName table to check<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @return true if the table exists in meta, false if not<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  public static boolean tableExists(Connection connection,<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      final TableName tableName)<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  throws IOException {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    // Catalog tables always exist.<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return tableName.equals(TableName.META_TABLE_NAME)<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        || getTableState(connection, tableName) != null;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  /**<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * Lists all of the regions currently in META.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   *<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param connection to connect with<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param excludeOfflinedSplitParents False if we are to include offlined/splitparents regions,<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   *                                    true and we'll leave out offlined regions from returned list<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * @return List of all user-space regions.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   */<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  @VisibleForTesting<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  public static List&lt;RegionInfo&gt; getAllRegions(Connection connection,<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      boolean excludeOfflinedSplitParents)<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      throws IOException {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result;<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>    result = getTableRegionsAndLocations(connection, null,<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        excludeOfflinedSplitParents);<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>    return getListOfRegionInfos(result);<a name="line.431"></a>
+<span class="sourceLineNo">219</span>  // Reading operations //<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  ////////////////////////<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>  /**<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * @param connection connection we're using<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * @param visitor Visitor invoked against each row in regions family.<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   */<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public static void fullScanRegions(Connection connection,<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      final Visitor visitor)<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      throws IOException {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    scanMeta(connection, null, null, QueryType.REGION, visitor);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>  }<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>  /**<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @param connection connection we're using<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  public static List&lt;Result&gt; fullScanRegions(Connection connection)<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      throws IOException {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return fullScan(connection, QueryType.REGION);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  /**<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for tables.<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * @param connection connection we're using<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * @param visitor Visitor invoked against each row in tables family.<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   */<a name="line.246"></a>
+<span class="sourceLineNo">247</span>  public static void fullScanTables(Connection connection,<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      final Visitor visitor)<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    scanMeta(connection, null, null, QueryType.TABLE, visitor);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  }<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>  /**<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * @param connection connection we're using<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   * @param type scanned part of meta<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   * @return List of {@link Result}<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  public static List&lt;Result&gt; fullScan(Connection connection, QueryType type)<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    throws IOException {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    CollectAllVisitor v = new CollectAllVisitor();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    scanMeta(connection, null, null, type, v);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    return v.getResults();<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  }<a name="line.264"></a>
+<span class="sourceLineNo">265</span><a name="line.265"></a>
+<span class="sourceLineNo">266</span>  /**<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   * Callers should call close on the returned {@link Table} instance.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   * @param connection connection we're using to access Meta<a name="line.268"></a>
+<span class="sourceLineNo">269</span>   * @return An {@link Table} for &lt;code&gt;hbase:meta&lt;/code&gt;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>   */<a name="line.270"></a>
+<span class="sourceLineNo">271</span>  public static Table getMetaHTable(final Connection connection)<a name="line.271"></a>
+<span class="sourceLineNo">272</span>  throws IOException {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // We used to pass whole CatalogTracker in here, now we just pass in Connection<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    if (connection == null) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      throw new NullPointerException("No connection");<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    } else if (connection.isClosed()) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      throw new IOException("connection is closed");<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    return connection.getTable(TableName.META_TABLE_NAME);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>  /**<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * @param t Table to use (will be closed when done).<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   * @param g Get to run<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   */<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  private static Result get(final Table t, final Get g) throws IOException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    if (t == null) return null;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    try {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      return t.get(g);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    } finally {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      t.close();<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>  /**<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   * Gets the region info and assignment for the specified region.<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   * @param connection connection we're using<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * @param regionName Region to lookup.<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   * @return Location and RegionInfo for &lt;code&gt;regionName&lt;/code&gt;<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   * @deprecated use {@link #getRegionLocation(Connection, byte[])} instead<a name="line.300"></a>
+<span class="sourceLineNo">301</span>   */<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  @Deprecated<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  public static Pair&lt;RegionInfo, ServerName&gt; getRegion(Connection connection, byte [] regionName)<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    throws IOException {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    HRegionLocation location = getRegionLocation(connection, regionName);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    return location == null<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      ? null<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      : new Pair&lt;&gt;(location.getRegionInfo(), location.getServerName());<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>  /**<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   * Returns the HRegionLocation from meta for the given region<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * @param connection connection we're using<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   * @param regionName region we're looking for<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * @return HRegionLocation for the given region<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   */<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public static HRegionLocation getRegionLocation(Connection connection, byte[] regionName)<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      throws IOException {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    byte[] row = regionName;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    RegionInfo parsedInfo = null;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    try {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      parsedInfo = parseRegionInfoFromRegionName(regionName);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      row = getMetaKeyForRegion(parsedInfo);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    } catch (Exception parseEx) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      // Ignore. This is used with tableName passed as regionName.<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    Get get = new Get(row);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    Result r = get(getMetaHTable(connection), get);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    RegionLocations locations = getRegionLocations(r);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    return locations == null ? null<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      : locations.getRegionLocation(parsedInfo == null ? 0 : parsedInfo.getReplicaId());<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>  /**<a name="line.335"></a>
+<span class="sourceLineNo">336</span>   * Returns the HRegionLocation from meta for the given region<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * @param connection connection we're using<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * @param regionInfo region information<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * @return HRegionLocation for the given region<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   */<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  public static HRegionLocation getRegionLocation(Connection connection, RegionInfo regionInfo)<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      throws IOException {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    byte[] row = getMetaKeyForRegion(regionInfo);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    Get get = new Get(row);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    Result r = get(getMetaHTable(connection), get);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    return getRegionLocation(r, regionInfo, regionInfo.getReplicaId());<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  /** Returns the row key to use for this regionInfo */<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  public static byte[] getMetaKeyForRegion(RegionInfo regionInfo) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    return RegionReplicaUtil.getRegionInfoForDefaultReplica(regionInfo).getRegionName();<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  /** Returns an HRI parsed from this regionName. Not all the fields of the HRI<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * is stored in the name, so the returned object should only be used for the fields<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * in the regionName.<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   */<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  public static RegionInfo parseRegionInfoFromRegionName(byte[] regionName) throws IOException {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    byte[][] fields = RegionInfo.parseRegionName(regionName);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    long regionId = Long.parseLong(Bytes.toString(fields[2]));<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    int replicaId = fields.length &gt; 3 ? Integer.parseInt(Bytes.toString(fields[3]), 16) : 0;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    return RegionInfoBuilder.newBuilder(TableName.valueOf(fields[0]))<a name="line.363"></a>
+<span class="sourceLineNo">364</span>              .setStartKey(fields[1])<a name="line.364"></a>
+<span class="sourceLineNo">365</span>              .setEndKey(fields[2])<a name="line.365"></a>
+<span class="sourceLineNo">366</span>              .setSplit(false)<a name="line.366"></a>
+<span class="sourceLineNo">367</span>              .setRegionId(regionId)<a name="line.367"></a>
+<span class="sourceLineNo">368</span>              .setReplicaId(replicaId)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>              .build();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  /**<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * Gets the result in hbase:meta for the specified region.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * @param connection connection we're using<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param regionName region we're looking for<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @return result of the specified region<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   */<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  public static Result getRegionResult(Connection connection,<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      byte[] regionName) throws IOException {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    Get get = new Get(regionName);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return get(getMetaHTable(connection), get);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>  /**<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * Get regions from the merge qualifier of the specified merged region<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * @return null if it doesn't contain merge qualifier, else two merge regions<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  @Nullable<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  public static Pair&lt;RegionInfo, RegionInfo&gt; getRegionsFromMergeQualifier(<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      Connection connection, byte[] regionName) throws IOException {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    Result result = getRegionResult(connection, regionName);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    RegionInfo mergeA = getRegionInfo(result, HConstants.MERGEA_QUALIFIER);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    RegionInfo mergeB = getRegionInfo(result, HConstants.MERGEB_QUALIFIER);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    if (mergeA == null &amp;&amp; mergeB == null) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      return null;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    return new Pair&lt;&gt;(mergeA, mergeB);<a name="line.398"></a>
+<span class="sourceLineNo">399</span> }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>  /**<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   * Checks if the specified table exists.  Looks at the hbase:meta table hosted on<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   * the specified server.<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * @param connection connection we're using<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   * @param tableName table to check<a name="line.405"></a>
+<span class="sourceLineNo">406</span>   * @return true if the table exists in meta, false if not<a name="line.406"></a>
+<span class="sourceLineNo">407</span>   */<a name="line.407"></a>
+<span class="sourceLineNo">408</span>  public static boolean tableExists(Connection connection,<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      final TableName tableName)<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  throws IOException {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // Catalog tables always exist.<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    return tableName.equals(TableName.META_TABLE_NAME)<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        || getTableState(connection, tableName) != null;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  }<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>  /**<a name="line.416"></a>
+<span class="sourceLineNo">417</span>   * Lists all of the regions currently in META.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   *<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * @param connection to connect with<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   * @param excludeOfflinedSplitParents False if we are to include offlined/splitparents regions,<a name="line.420"></a>
+<span class="sourceLineNo">421</span>   *                                    true and we'll leave out offlined regions from returned list<a name="line.421"></a>
+<span class="sourceLineNo">422</span>   * @return List of all user-space regions.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>   */<a name="line.423"></a>
+<span class="sourceLineNo">424</span>  @VisibleForTesting<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  public static List&lt;RegionInfo&gt; getAllRegions(Connection connection,<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      boolean excludeOfflinedSplitParents)<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      throws IOException {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result;<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>    result = getTableRegionsAndLocations(connection, null,<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        excludeOfflinedSplitParents);<a name="line.431"></a>
 <span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>  }<a name="line.433"></a>
+<span class="sourceLineNo">433</span>    return getListOfRegionInfos(result);<a name="line.433"></a>
 <span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>  /**<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * Gets all of the regions of the specified table. Do not use this method<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * to get meta table regions, use methods in MetaTableLocator instead.<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * @param connection connection we're using<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   * @param tableName table we're looking for<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   * @return Ordered list of {@link RegionInfo}.<a name="line.440"></a>
-<span class="sourceLineNo">441</span>   */<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  public static List&lt;RegionInfo&gt; getTableRegions(Connection connection, TableName tableName)<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  throws IOException {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    return getTableRegions(connection, tableName, false);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>  /**<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * Gets all of the regions of the specified table. Do not use this method<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   * to get meta table regions, use methods in MetaTableLocator instead.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * @param connection connection we're using<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * @param tableName table we're looking for<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * @param excludeOfflinedSplitParents If true, do not include offlined split<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * parents in the return.<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * @return Ordered list of {@link RegionInfo}.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   */<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  public static List&lt;RegionInfo&gt; getTableRegions(Connection connection, TableName tableName,<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      final boolean excludeOfflinedSplitParents) throws IOException {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result =<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      getTableRegionsAndLocations(connection, tableName, excludeOfflinedSplitParents);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    return getListOfRegionInfos(result);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>  }<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>  private static List&lt;RegionInfo&gt; getListOfRegionInfos(<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      final List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; pairs) {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    if (pairs == null || pairs.isEmpty()) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      return Collections.emptyList();<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    List&lt;RegionInfo&gt; result = new ArrayList&lt;&gt;(pairs.size());<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    for (Pair&lt;RegionInfo, ServerName&gt; pair : pairs) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      result.add(pair.getFirst());<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return result;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * @param tableName table we're working with<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @return start row for scanning META according to query type<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  public static byte[] getTableStartRowForMeta(TableName tableName, QueryType type) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    if (tableName == null) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      return null;<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    }<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    switch (type) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    case REGION:<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      byte[] startRow = new byte[tableName.getName().length + 2];<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      System.arraycopy(tableName.getName(), 0, startRow, 0, tableName.getName().length);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      startRow[startRow.length - 2] = HConstants.DELIMITER;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      startRow[startRow.length - 1] = HConstants.DELIMITER;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      return startRow;<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    case ALL:<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    case TABLE:<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    default:<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      return tableName.getName();<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  }<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>  /**<a name="line.497"></a>
-<span class="sourceLineNo">498</span>   * @param tableName table we're working with<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * @return stop row for scanning META according to query type<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   */<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  public static byte[] getTableStopRowForMeta(TableName tableName, QueryType type) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    if (tableName == null) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      return null;<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    }<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    final byte[] stopRow;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    switch (type) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    case REGION:<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      stopRow = new byte[tableName.getName().length + 3];<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      System.arraycopy(tableName.getName(), 0, stopRow, 0, tableName.getName().length);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      stopRow[stopRow.length - 3] = ' ';<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      stopRow[stopRow.length - 2] = HConstants.DELIMITER;<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      stopRow[stopRow.length - 1] = HConstants.DELIMITER;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      break;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    case ALL:<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    case TABLE:<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    default:<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      stopRow = new byte[tableName.getName().length + 1];<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      System.arraycopy(tableName.getName(), 0, stopRow, 0, tableName.getName().length);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      stopRow[stopRow.length - 1] = ' ';<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      break;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    }<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    return stopRow;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>  /**<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * This method creates a Scan object that will only scan catalog rows that<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * belong to the specified table. It doesn't specify any columns.<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   * This is a better alternative to just using a start row and scan until<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * it hits a new table since that requires parsing the HRI to get the table<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * name.<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * @param tableName bytes of table's name<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * @return configured Scan object<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   */<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  @Deprecated<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  public static Scan getScanForTableName(Connection connection, TableName tableName) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    // Start key is just the table name with delimiters<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    byte[] startKey = getTableStartRowForMeta(tableName, QueryType.REGION);<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    // Stop key appends the smallest possible char to the table name<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    byte[] stopKey = getTableStopRowForMeta(tableName, QueryType.REGION);<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>    Scan scan = getMetaScan(connection, -1);<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    scan.setStartRow(startKey);<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    scan.setStopRow(stopKey);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    return scan;<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>  private static Scan getMetaScan(Connection connection, int rowUpperLimit) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    Scan scan = new Scan();<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    int scannerCaching = connection.getConfiguration()<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        .getInt(HConstants.HBASE_META_SCANNER_CACHING,<a name="line.550"></a>
-<span class="sourceLineNo">551</span>            HConstants.DEFAULT_HBASE_META_SCANNER_CACHING);<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    if (connection.getConfiguration().getBoolean(HConstants.USE_META_REPLICAS,<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        HConstants.DEFAULT_USE_META_REPLICAS)) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      scan.setConsistency(Consistency.TIMELINE);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    if (rowUpperLimit &gt; 0) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      scan.setLimit(rowUpperLimit);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      scan.setReadType(Scan.ReadType.PREAD);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    

<TRUNCATED>

[10/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html
index 6007f27..4ce6735 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html
@@ -65,716 +65,716 @@
 <span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Table;<a name="line.57"></a>
 <span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.58"></a>
 <span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsResponse;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.slf4j.Logger;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.slf4j.LoggerFactory;<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.79"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsResponse;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.slf4j.Logger;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.slf4j.LoggerFactory;<a name="line.79"></a>
 <span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>/**<a name="line.81"></a>
-<span class="sourceLineNo">082</span> * &lt;p&gt;<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * Read/write operations on region and assignment information store in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * &lt;/p&gt;<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * &lt;p&gt;<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * Some of the methods of this class take ZooKeeperWatcher as a param. The only reason for this is<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * because when used on client-side (like from HBaseAdmin), we want to use short-living connection<a name="line.87"></a>
-<span class="sourceLineNo">088</span> * (opened before each operation, closed right after), while when used on HM or HRS (like in<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * AssignmentManager) we want permanent connection.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * &lt;/p&gt;<a name="line.90"></a>
-<span class="sourceLineNo">091</span> * &lt;p&gt;<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * HBASE-10070 adds a replicaId to HRI, meaning more than one HRI can be defined for the same table<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * range (table, startKey, endKey). For every range, there will be at least one HRI defined which is<a name="line.93"></a>
-<span class="sourceLineNo">094</span> * called default replica.<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * &lt;/p&gt;<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * &lt;p&gt;<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * Meta layout (as of 0.98 + HBASE-10070) is like:<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * &lt;pre&gt;<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * For each table there is single row in column family 'table' formatted:<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * &amp;lt;tableName&amp;gt; including namespace and columns are:<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * table: state             =&gt; contains table state<a name="line.102"></a>
-<span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * For each table range, there is a single row, formatted like:<a name="line.104"></a>
-<span class="sourceLineNo">105</span> * &amp;lt;tableName&amp;gt;,&amp;lt;startKey&amp;gt;,&amp;lt;regionId&amp;gt;,&amp;lt;encodedRegionName&amp;gt;.<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * This row corresponds to the regionName of the default region replica.<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Columns are:<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * info:regioninfo         =&gt; contains serialized HRI for the default region replica<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * info:server             =&gt; contains hostname:port (in string form) for the server hosting<a name="line.109"></a>
-<span class="sourceLineNo">110</span> *                            the default regionInfo replica<a name="line.110"></a>
-<span class="sourceLineNo">111</span> * info:server_&amp;lt;replicaId&amp;gt =&gt; contains hostname:port (in string form) for the server hosting<a name="line.111"></a>
-<span class="sourceLineNo">112</span> *                                 the regionInfo replica with replicaId<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * info:serverstartcode    =&gt; contains server start code (in binary long form) for the server<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *                            hosting the default regionInfo replica<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * info:serverstartcode_&amp;lt;replicaId&amp;gt =&gt; contains server start code (in binary long form) for<a name="line.115"></a>
-<span class="sourceLineNo">116</span> *                                          the server hosting the regionInfo replica with<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *                                          replicaId<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * info:seqnumDuringOpen   =&gt; contains seqNum (in binary long form) for the region at the time<a name="line.118"></a>
-<span class="sourceLineNo">119</span> *                             the server opened the region with default replicaId<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * info:seqnumDuringOpen_&amp;lt;replicaId&amp;gt =&gt; contains seqNum (in binary long form) for the region<a name="line.120"></a>
-<span class="sourceLineNo">121</span> *                                           at the time the server opened the region with<a name="line.121"></a>
-<span class="sourceLineNo">122</span> *                                           replicaId<a name="line.122"></a>
-<span class="sourceLineNo">123</span> * info:splitA             =&gt; contains a serialized HRI for the first daughter region if the<a name="line.123"></a>
-<span class="sourceLineNo">124</span> *                             region is split<a name="line.124"></a>
-<span class="sourceLineNo">125</span> * info:splitB             =&gt; contains a serialized HRI for the second daughter region if the<a name="line.125"></a>
+<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>/**<a name="line.83"></a>
+<span class="sourceLineNo">084</span> * &lt;p&gt;<a name="line.84"></a>
+<span class="sourceLineNo">085</span> * Read/write operations on region and assignment information store in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * &lt;/p&gt;<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * &lt;p&gt;<a name="line.87"></a>
+<span class="sourceLineNo">088</span> * Some of the methods of this class take ZooKeeperWatcher as a param. The only reason for this is<a name="line.88"></a>
+<span class="sourceLineNo">089</span> * because when used on client-side (like from HBaseAdmin), we want to use short-living connection<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * (opened before each operation, closed right after), while when used on HM or HRS (like in<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * AssignmentManager) we want permanent connection.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * &lt;/p&gt;<a name="line.92"></a>
+<span class="sourceLineNo">093</span> * &lt;p&gt;<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * HBASE-10070 adds a replicaId to HRI, meaning more than one HRI can be defined for the same table<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * range (table, startKey, endKey). For every range, there will be at least one HRI defined which is<a name="line.95"></a>
+<span class="sourceLineNo">096</span> * called default replica.<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * &lt;/p&gt;<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * &lt;p&gt;<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * Meta layout (as of 0.98 + HBASE-10070) is like:<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * &lt;pre&gt;<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * For each table there is single row in column family 'table' formatted:<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * &amp;lt;tableName&amp;gt; including namespace and columns are:<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * table: state             =&gt; contains table state<a name="line.104"></a>
+<span class="sourceLineNo">105</span> *<a name="line.105"></a>
+<span class="sourceLineNo">106</span> * For each table range, there is a single row, formatted like:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * &amp;lt;tableName&amp;gt;,&amp;lt;startKey&amp;gt;,&amp;lt;regionId&amp;gt;,&amp;lt;encodedRegionName&amp;gt;.<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * This row corresponds to the regionName of the default region replica.<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * Columns are:<a name="line.109"></a>
+<span class="sourceLineNo">110</span> * info:regioninfo         =&gt; contains serialized HRI for the default region replica<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * info:server             =&gt; contains hostname:port (in string form) for the server hosting<a name="line.111"></a>
+<span class="sourceLineNo">112</span> *                            the default regionInfo replica<a name="line.112"></a>
+<span class="sourceLineNo">113</span> * info:server_&amp;lt;replicaId&amp;gt =&gt; contains hostname:port (in string form) for the server hosting<a name="line.113"></a>
+<span class="sourceLineNo">114</span> *                                 the regionInfo replica with replicaId<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * info:serverstartcode    =&gt; contains server start code (in binary long form) for the server<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *                            hosting the default regionInfo replica<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * info:serverstartcode_&amp;lt;replicaId&amp;gt =&gt; contains server start code (in binary long form) for<a name="line.117"></a>
+<span class="sourceLineNo">118</span> *                                          the server hosting the regionInfo replica with<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *                                          replicaId<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * info:seqnumDuringOpen   =&gt; contains seqNum (in binary long form) for the region at the time<a name="line.120"></a>
+<span class="sourceLineNo">121</span> *                             the server opened the region with default replicaId<a name="line.121"></a>
+<span class="sourceLineNo">122</span> * info:seqnumDuringOpen_&amp;lt;replicaId&amp;gt =&gt; contains seqNum (in binary long form) for the region<a name="line.122"></a>
+<span class="sourceLineNo">123</span> *                                           at the time the server opened the region with<a name="line.123"></a>
+<span class="sourceLineNo">124</span> *                                           replicaId<a name="line.124"></a>
+<span class="sourceLineNo">125</span> * info:splitA             =&gt; contains a serialized HRI for the first daughter region if the<a name="line.125"></a>
 <span class="sourceLineNo">126</span> *                             region is split<a name="line.126"></a>
-<span class="sourceLineNo">127</span> * info:mergeA             =&gt; contains a serialized HRI for the first parent region if the<a name="line.127"></a>
-<span class="sourceLineNo">128</span> *                             region is the result of a merge<a name="line.128"></a>
-<span class="sourceLineNo">129</span> * info:mergeB             =&gt; contains a serialized HRI for the second parent region if the<a name="line.129"></a>
+<span class="sourceLineNo">127</span> * info:splitB             =&gt; contains a serialized HRI for the second daughter region if the<a name="line.127"></a>
+<span class="sourceLineNo">128</span> *                             region is split<a name="line.128"></a>
+<span class="sourceLineNo">129</span> * info:mergeA             =&gt; contains a serialized HRI for the first parent region if the<a name="line.129"></a>
 <span class="sourceLineNo">130</span> *                             region is the result of a merge<a name="line.130"></a>
-<span class="sourceLineNo">131</span> * &lt;/pre&gt;<a name="line.131"></a>
-<span class="sourceLineNo">132</span> * &lt;/p&gt;<a name="line.132"></a>
-<span class="sourceLineNo">133</span> * &lt;p&gt;<a name="line.133"></a>
-<span class="sourceLineNo">134</span> * The actual layout of meta should be encapsulated inside MetaTableAccessor methods, and should not<a name="line.134"></a>
-<span class="sourceLineNo">135</span> * leak out of it (through Result objects, etc)<a name="line.135"></a>
-<span class="sourceLineNo">136</span> * &lt;/p&gt;<a name="line.136"></a>
-<span class="sourceLineNo">137</span> */<a name="line.137"></a>
-<span class="sourceLineNo">138</span>@InterfaceAudience.Private<a name="line.138"></a>
-<span class="sourceLineNo">139</span>public class MetaTableAccessor {<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static final Logger LOG = LoggerFactory.getLogger(MetaTableAccessor.class);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static final Logger METALOG = LoggerFactory.getLogger("org.apache.hadoop.hbase.META");<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static final byte[] META_REGION_PREFIX;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  static {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    // Copy the prefix from FIRST_META_REGIONINFO into META_REGION_PREFIX.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    // FIRST_META_REGIONINFO == 'hbase:meta,,1'.  META_REGION_PREFIX == 'hbase:meta,'<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    int len = RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName().length - 2;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    META_REGION_PREFIX = new byte [len];<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    System.arraycopy(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName(), 0,<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      META_REGION_PREFIX, 0, len);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>  @VisibleForTesting<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  public static final byte[] REPLICATION_PARENT_QUALIFIER = Bytes.toBytes("parent");<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  private static final byte ESCAPE_BYTE = (byte) 0xFF;<a name="line.157"></a>
+<span class="sourceLineNo">131</span> * info:mergeB             =&gt; contains a serialized HRI for the second parent region if the<a name="line.131"></a>
+<span class="sourceLineNo">132</span> *                             region is the result of a merge<a name="line.132"></a>
+<span class="sourceLineNo">133</span> * &lt;/pre&gt;<a name="line.133"></a>
+<span class="sourceLineNo">134</span> * &lt;/p&gt;<a name="line.134"></a>
+<span class="sourceLineNo">135</span> * &lt;p&gt;<a name="line.135"></a>
+<span class="sourceLineNo">136</span> * The actual layout of meta should be encapsulated inside MetaTableAccessor methods, and should not<a name="line.136"></a>
+<span class="sourceLineNo">137</span> * leak out of it (through Result objects, etc)<a name="line.137"></a>
+<span class="sourceLineNo">138</span> * &lt;/p&gt;<a name="line.138"></a>
+<span class="sourceLineNo">139</span> */<a name="line.139"></a>
+<span class="sourceLineNo">140</span>@InterfaceAudience.Private<a name="line.140"></a>
+<span class="sourceLineNo">141</span>public class MetaTableAccessor {<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static final Logger LOG = LoggerFactory.getLogger(MetaTableAccessor.class);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static final Logger METALOG = LoggerFactory.getLogger("org.apache.hadoop.hbase.META");<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static final byte[] META_REGION_PREFIX;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  static {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    // Copy the prefix from FIRST_META_REGIONINFO into META_REGION_PREFIX.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    // FIRST_META_REGIONINFO == 'hbase:meta,,1'.  META_REGION_PREFIX == 'hbase:meta,'<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    int len = RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName().length - 2;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    META_REGION_PREFIX = new byte [len];<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    System.arraycopy(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName(), 0,<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      META_REGION_PREFIX, 0, len);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  }<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span>  @VisibleForTesting<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  public static final byte[] REPLICATION_PARENT_QUALIFIER = Bytes.toBytes("parent");<a name="line.157"></a>
 <span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  private static final byte SEPARATED_BYTE = 0x00;<a name="line.159"></a>
+<span class="sourceLineNo">159</span>  private static final byte ESCAPE_BYTE = (byte) 0xFF;<a name="line.159"></a>
 <span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  /**<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * Lists all of the table regions currently in META.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * Deprecated, keep there until some test use this.<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * @param connection what we will use<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * @param tableName table to list<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @return Map of all user-space regions to servers<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * @deprecated use {@link #getTableRegionsAndLocations}, region can have multiple locations<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   */<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  @Deprecated<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  public static NavigableMap&lt;RegionInfo, ServerName&gt; allTableRegions(<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      Connection connection, final TableName tableName) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    final NavigableMap&lt;RegionInfo, ServerName&gt; regions = new TreeMap&lt;&gt;();<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    Visitor visitor = new TableVisitorBase(tableName) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      public boolean visitInternal(Result result) throws IOException {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        RegionLocations locations = getRegionLocations(result);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>        if (locations == null) return true;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        for (HRegionLocation loc : locations.getRegionLocations()) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          if (loc != null) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>            RegionInfo regionInfo = loc.getRegionInfo();<a name="line.180"></a>
-<span class="sourceLineNo">181</span>            regions.put(regionInfo, loc.getServerName());<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>        return true;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    };<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    scanMetaForTableRegions(connection, visitor, tableName);<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    return regions;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>  @InterfaceAudience.Private<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  public enum QueryType {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    ALL(HConstants.TABLE_FAMILY, HConstants.CATALOG_FAMILY),<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    REGION(HConstants.CATALOG_FAMILY),<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    TABLE(HConstants.TABLE_FAMILY),<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    REPLICATION(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>    private final byte[][] families;<a name="line.198"></a>
+<span class="sourceLineNo">161</span>  private static final byte SEPARATED_BYTE = 0x00;<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  /**<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   * Lists all of the table regions currently in META.<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * Deprecated, keep there until some test use this.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * @param connection what we will use<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * @param tableName table to list<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * @return Map of all user-space regions to servers<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * @deprecated use {@link #getTableRegionsAndLocations}, region can have multiple locations<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  @Deprecated<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public static NavigableMap&lt;RegionInfo, ServerName&gt; allTableRegions(<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      Connection connection, final TableName tableName) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    final NavigableMap&lt;RegionInfo, ServerName&gt; regions = new TreeMap&lt;&gt;();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    Visitor visitor = new TableVisitorBase(tableName) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      @Override<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      public boolean visitInternal(Result result) throws IOException {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        RegionLocations locations = getRegionLocations(result);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        if (locations == null) return true;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        for (HRegionLocation loc : locations.getRegionLocations()) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          if (loc != null) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            RegionInfo regionInfo = loc.getRegionInfo();<a name="line.182"></a>
+<span class="sourceLineNo">183</span>            regions.put(regionInfo, loc.getServerName());<a name="line.183"></a>
+<span class="sourceLineNo">184</span>          }<a name="line.184"></a>
+<span class="sourceLineNo">185</span>        }<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        return true;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    };<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    scanMetaForTableRegions(connection, visitor, tableName);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    return regions;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  @InterfaceAudience.Private<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  public enum QueryType {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    ALL(HConstants.TABLE_FAMILY, HConstants.CATALOG_FAMILY),<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    REGION(HConstants.CATALOG_FAMILY),<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    TABLE(HConstants.TABLE_FAMILY),<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    REPLICATION(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.198"></a>
 <span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>    QueryType(byte[]... families) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      this.families = families;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span>    byte[][] getFamilies() {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return this.families;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private static final Pattern SERVER_COLUMN_PATTERN<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    = Pattern.compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  ////////////////////////<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  // Reading operations //<a name="line.217"></a>
+<span class="sourceLineNo">200</span>    private final byte[][] families;<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    QueryType(byte[]... families) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      this.families = families;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>    byte[][] getFamilies() {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      return this.families;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    }<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  private static final Pattern SERVER_COLUMN_PATTERN<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    = Pattern.compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
 <span class="sourceLineNo">218</span>  ////////////////////////<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>  /**<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   * @param connection connection we're using<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * @param visitor Visitor invoked against each row in regions family.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  public static void fullScanRegions(Connection connection,<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      final Visitor visitor)<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      throws IOException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    scanMeta(connection, null, null, QueryType.REGION, visitor);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  /**<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   * @param connection connection we're using<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public static List&lt;Result&gt; fullScanRegions(Connection connection)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      throws IOException {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    return fullScan(connection, QueryType.REGION);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  /**<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for tables.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   * @param connection connection we're using<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * @param visitor Visitor invoked against each row in tables family.<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  public static void fullScanTables(Connection connection,<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      final Visitor visitor)<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      throws IOException {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    scanMeta(connection, null, null, QueryType.TABLE, visitor);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>  /**<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   * @param connection connection we're using<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   * @param type scanned part of meta<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * @return List of {@link Result}<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  public static List&lt;Result&gt; fullScan(Connection connection, QueryType type)<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    throws IOException {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    CollectAllVisitor v = new CollectAllVisitor();<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    scanMeta(connection, null, null, type, v);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return v.getResults();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>  /**<a name="line.264"></a>
-<span class="sourceLineNo">265</span>   * Callers should call close on the returned {@link Table} instance.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>   * @param connection connection we're using to access Meta<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   * @return An {@link Table} for &lt;code&gt;hbase:meta&lt;/code&gt;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   */<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  public static Table getMetaHTable(final Connection connection)<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  throws IOException {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // We used to pass whole CatalogTracker in here, now we just pass in Connection<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    if (connection == null) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      throw new NullPointerException("No connection");<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    } else if (connection.isClosed()) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      throw new IOException("connection is closed");<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return connection.getTable(TableName.META_TABLE_NAME);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>  /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * @param t Table to use (will be closed when done).<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   * @param g Get to run<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   */<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  private static Result get(final Table t, final Get g) throws IOException {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    if (t == null) return null;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    try {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      return t.get(g);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    } finally {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      t.close();<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    }<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  /**<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * Gets the region info and assignment for the specified region.<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @param connection connection we're using<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * @param regionName Region to lookup.<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   * @return Location and RegionInfo for &lt;code&gt;regionName&lt;/code&gt;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>   * @deprecated use {@link #getRegionLocation(Connection, byte[])} instead<a name="line.298"></a>
-<span class="sourceLineNo">299</span>   */<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  @Deprecated<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  public static Pair&lt;RegionInfo, ServerName&gt; getRegion(Connection connection, byte [] regionName)<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    throws IOException {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    HRegionLocation location = getRegionLocation(connection, regionName);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    return location == null<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      ? null<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      : new Pair&lt;&gt;(location.getRegionInfo(), location.getServerName());<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  /**<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * Returns the HRegionLocation from meta for the given region<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * @param connection connection we're using<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * @param regionName region we're looking for<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * @return HRegionLocation for the given region<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public static HRegionLocation getRegionLocation(Connection connection, byte[] regionName)<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      throws IOException {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    byte[] row = regionName;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    RegionInfo parsedInfo = null;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    try {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      parsedInfo = parseRegionInfoFromRegionName(regionName);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      row = getMetaKeyForRegion(parsedInfo);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    } catch (Exception parseEx) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      // Ignore. This is used with tableName passed as regionName.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    Get get = new Get(row);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    Result r = get(getMetaHTable(connection), get);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    RegionLocations locations = getRegionLocations(r);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    return locations == null ? null<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      : locations.getRegionLocation(parsedInfo == null ? 0 : parsedInfo.getReplicaId());<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  /**<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * Returns the HRegionLocation from meta for the given region<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * @param connection connection we're using<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   * @param regionInfo region information<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * @return HRegionLocation for the given region<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   */<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static HRegionLocation getRegionLocation(Connection connection, RegionInfo regionInfo)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      throws IOException {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    byte[] row = getMetaKeyForRegion(regionInfo);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    Get get = new Get(row);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    Result r = get(getMetaHTable(connection), get);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    return getRegionLocation(r, regionInfo, regionInfo.getReplicaId());<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>  /** Returns the row key to use for this regionInfo */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public static byte[] getMetaKeyForRegion(RegionInfo regionInfo) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    return RegionReplicaUtil.getRegionInfoForDefaultReplica(regionInfo).getRegionName();<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /** Returns an HRI parsed from this regionName. Not all the fields of the HRI<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * is stored in the name, so the returned object should only be used for the fields<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * in the regionName.<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  public static RegionInfo parseRegionInfoFromRegionName(byte[] regionName) throws IOException {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    byte[][] fields = RegionInfo.parseRegionName(regionName);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    long regionId = Long.parseLong(Bytes.toString(fields[2]));<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    int replicaId = fields.length &gt; 3 ? Integer.parseInt(Bytes.toString(fields[3]), 16) : 0;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    return RegionInfoBuilder.newBuilder(TableName.valueOf(fields[0]))<a name="line.361"></a>
-<span class="sourceLineNo">362</span>              .setStartKey(fields[1])<a name="line.362"></a>
-<span class="sourceLineNo">363</span>              .setEndKey(fields[2])<a name="line.363"></a>
-<span class="sourceLineNo">364</span>              .setSplit(false)<a name="line.364"></a>
-<span class="sourceLineNo">365</span>              .setRegionId(regionId)<a name="line.365"></a>
-<span class="sourceLineNo">366</span>              .setReplicaId(replicaId)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>              .build();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * Gets the result in hbase:meta for the specified region.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * @param connection connection we're using<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * @param regionName region we're looking for<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * @return result of the specified region<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   */<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  public static Result getRegionResult(Connection connection,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      byte[] regionName) throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    Get get = new Get(regionName);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    return get(getMetaHTable(connection), get);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span>  /**<a name="line.383"></a>
-<span class="sourceLineNo">384</span>   * Get regions from the merge qualifier of the specified merged region<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * @return null if it doesn't contain merge qualifier, else two merge regions<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   */<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Nullable<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public static Pair&lt;RegionInfo, RegionInfo&gt; getRegionsFromMergeQualifier(<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      Connection connection, byte[] regionName) throws IOException {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    Result result = getRegionResult(connection, regionName);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    RegionInfo mergeA = getRegionInfo(result, HConstants.MERGEA_QUALIFIER);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    RegionInfo mergeB = getRegionInfo(result, HConstants.MERGEB_QUALIFIER);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    if (mergeA == null &amp;&amp; mergeB == null) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      return null;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    return new Pair&lt;&gt;(mergeA, mergeB);<a name="line.396"></a>
-<span class="sourceLineNo">397</span> }<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  /**<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * Checks if the specified table exists.  Looks at the hbase:meta table hosted on<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * the specified server.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param connection connection we're using<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param tableName table to check<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @return true if the table exists in meta, false if not<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  public static boolean tableExists(Connection connection,<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      final TableName tableName)<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  throws IOException {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    // Catalog tables always exist.<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return tableName.equals(TableName.META_TABLE_NAME)<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        || getTableState(connection, tableName) != null;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  /**<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * Lists all of the regions currently in META.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   *<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param connection to connect with<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param excludeOfflinedSplitParents False if we are to include offlined/splitparents regions,<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   *                                    true and we'll leave out offlined regions from returned list<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * @return List of all user-space regions.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   */<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  @VisibleForTesting<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  public static List&lt;RegionInfo&gt; getAllRegions(Connection connection,<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      boolean excludeOfflinedSplitParents)<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      throws IOException {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result;<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>    result = getTableRegionsAndLocations(connection, null,<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        excludeOfflinedSplitParents);<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>    return getListOfRegionInfos(result);<a name="line.431"></a>
+<span class="sourceLineNo">219</span>  // Reading operations //<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  ////////////////////////<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>  /**<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * @param connection connection we're using<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * @param visitor Visitor invoked against each row in regions family.<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   */<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public static void fullScanRegions(Connection connection,<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      final Visitor visitor)<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      throws IOException {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    scanMeta(connection, null, null, QueryType.REGION, visitor);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>  }<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>  /**<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @param connection connection we're using<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  public static List&lt;Result&gt; fullScanRegions(Connection connection)<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      throws IOException {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return fullScan(connection, QueryType.REGION);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  /**<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for tables.<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * @param connection connection we're using<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * @param visitor Visitor invoked against each row in tables family.<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   */<a name="line.246"></a>
+<span class="sourceLineNo">247</span>  public static void fullScanTables(Connection connection,<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      final Visitor visitor)<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    scanMeta(connection, null, null, QueryType.TABLE, visitor);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  }<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>  /**<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * @param connection connection we're using<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   * @param type scanned part of meta<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   * @return List of {@link Result}<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  public static List&lt;Result&gt; fullScan(Connection connection, QueryType type)<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    throws IOException {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    CollectAllVisitor v = new CollectAllVisitor();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    scanMeta(connection, null, null, type, v);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    return v.getResults();<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  }<a name="line.264"></a>
+<span class="sourceLineNo">265</span><a name="line.265"></a>
+<span class="sourceLineNo">266</span>  /**<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   * Callers should call close on the returned {@link Table} instance.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   * @param connection connection we're using to access Meta<a name="line.268"></a>
+<span class="sourceLineNo">269</span>   * @return An {@link Table} for &lt;code&gt;hbase:meta&lt;/code&gt;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>   */<a name="line.270"></a>
+<span class="sourceLineNo">271</span>  public static Table getMetaHTable(final Connection connection)<a name="line.271"></a>
+<span class="sourceLineNo">272</span>  throws IOException {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // We used to pass whole CatalogTracker in here, now we just pass in Connection<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    if (connection == null) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      throw new NullPointerException("No connection");<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    } else if (connection.isClosed()) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      throw new IOException("connection is closed");<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    return connection.getTable(TableName.META_TABLE_NAME);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>  /**<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * @param t Table to use (will be closed when done).<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   * @param g Get to run<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   */<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  private static Result get(final Table t, final Get g) throws IOException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    if (t == null) return null;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    try {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      return t.get(g);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    } finally {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      t.close();<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>  /**<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   * Gets the region info and assignment for the specified region.<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   * @param connection connection we're using<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * @param regionName Region to lookup.<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   * @return Location and RegionInfo for &lt;code&gt;regionName&lt;/code&gt;<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   * @deprecated use {@link #getRegionLocation(Connection, byte[])} instead<a name="line.300"></a>
+<span class="sourceLineNo">301</span>   */<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  @Deprecated<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  public static Pair&lt;RegionInfo, ServerName&gt; getRegion(Connection connection, byte [] regionName)<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    throws IOException {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    HRegionLocation location = getRegionLocation(connection, regionName);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    return location == null<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      ? null<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      : new Pair&lt;&gt;(location.getRegionInfo(), location.getServerName());<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>  /**<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   * Returns the HRegionLocation from meta for the given region<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * @param connection connection we're using<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   * @param regionName region we're looking for<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * @return HRegionLocation for the given region<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   */<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public static HRegionLocation getRegionLocation(Connection connection, byte[] regionName)<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      throws IOException {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    byte[] row = regionName;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    RegionInfo parsedInfo = null;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    try {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      parsedInfo = parseRegionInfoFromRegionName(regionName);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      row = getMetaKeyForRegion(parsedInfo);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    } catch (Exception parseEx) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      // Ignore. This is used with tableName passed as regionName.<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    Get get = new Get(row);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    Result r = get(getMetaHTable(connection), get);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    RegionLocations locations = getRegionLocations(r);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    return locations == null ? null<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      : locations.getRegionLocation(parsedInfo == null ? 0 : parsedInfo.getReplicaId());<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>  /**<a name="line.335"></a>
+<span class="sourceLineNo">336</span>   * Returns the HRegionLocation from meta for the given region<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * @param connection connection we're using<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * @param regionInfo region information<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * @return HRegionLocation for the given region<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   */<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  public static HRegionLocation getRegionLocation(Connection connection, RegionInfo regionInfo)<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      throws IOException {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    byte[] row = getMetaKeyForRegion(regionInfo);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    Get get = new Get(row);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    Result r = get(getMetaHTable(connection), get);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    return getRegionLocation(r, regionInfo, regionInfo.getReplicaId());<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  /** Returns the row key to use for this regionInfo */<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  public static byte[] getMetaKeyForRegion(RegionInfo regionInfo) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    return RegionReplicaUtil.getRegionInfoForDefaultReplica(regionInfo).getRegionName();<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  /** Returns an HRI parsed from this regionName. Not all the fields of the HRI<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * is stored in the name, so the returned object should only be used for the fields<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * in the regionName.<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   */<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  public static RegionInfo parseRegionInfoFromRegionName(byte[] regionName) throws IOException {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    byte[][] fields = RegionInfo.parseRegionName(regionName);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    long regionId = Long.parseLong(Bytes.toString(fields[2]));<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    int replicaId = fields.length &gt; 3 ? Integer.parseInt(Bytes.toString(fields[3]), 16) : 0;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    return RegionInfoBuilder.newBuilder(TableName.valueOf(fields[0]))<a name="line.363"></a>
+<span class="sourceLineNo">364</span>              .setStartKey(fields[1])<a name="line.364"></a>
+<span class="sourceLineNo">365</span>              .setEndKey(fields[2])<a name="line.365"></a>
+<span class="sourceLineNo">366</span>              .setSplit(false)<a name="line.366"></a>
+<span class="sourceLineNo">367</span>              .setRegionId(regionId)<a name="line.367"></a>
+<span class="sourceLineNo">368</span>              .setReplicaId(replicaId)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>              .build();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  /**<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * Gets the result in hbase:meta for the specified region.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * @param connection connection we're using<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param regionName region we're looking for<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @return result of the specified region<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   */<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  public static Result getRegionResult(Connection connection,<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      byte[] regionName) throws IOException {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    Get get = new Get(regionName);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return get(getMetaHTable(connection), get);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>  /**<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * Get regions from the merge qualifier of the specified merged region<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * @return null if it doesn't contain merge qualifier, else two merge regions<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  @Nullable<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  public static Pair&lt;RegionInfo, RegionInfo&gt; getRegionsFromMergeQualifier(<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      Connection connection, byte[] regionName) throws IOException {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    Result result = getRegionResult(connection, regionName);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    RegionInfo mergeA = getRegionInfo(result, HConstants.MERGEA_QUALIFIER);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    RegionInfo mergeB = getRegionInfo(result, HConstants.MERGEB_QUALIFIER);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    if (mergeA == null &amp;&amp; mergeB == null) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      return null;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    return new Pair&lt;&gt;(mergeA, mergeB);<a name="line.398"></a>
+<span class="sourceLineNo">399</span> }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>  /**<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   * Checks if the specified table exists.  Looks at the hbase:meta table hosted on<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   * the specified server.<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * @param connection connection we're using<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   * @param tableName table to check<a name="line.405"></a>
+<span class="sourceLineNo">406</span>   * @return true if the table exists in meta, false if not<a name="line.406"></a>
+<span class="sourceLineNo">407</span>   */<a name="line.407"></a>
+<span class="sourceLineNo">408</span>  public static boolean tableExists(Connection connection,<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      final TableName tableName)<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  throws IOException {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // Catalog tables always exist.<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    return tableName.equals(TableName.META_TABLE_NAME)<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        || getTableState(connection, tableName) != null;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  }<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>  /**<a name="line.416"></a>
+<span class="sourceLineNo">417</span>   * Lists all of the regions currently in META.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   *<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * @param connection to connect with<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   * @param excludeOfflinedSplitParents False if we are to include offlined/splitparents regions,<a name="line.420"></a>
+<span class="sourceLineNo">421</span>   *                                    true and we'll leave out offlined regions from returned list<a name="line.421"></a>
+<span class="sourceLineNo">422</span>   * @return List of all user-space regions.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>   */<a name="line.423"></a>
+<span class="sourceLineNo">424</span>  @VisibleForTesting<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  public static List&lt;RegionInfo&gt; getAllRegions(Connection connection,<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      boolean excludeOfflinedSplitParents)<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      throws IOException {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result;<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>    result = getTableRegionsAndLocations(connection, null,<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        excludeOfflinedSplitParents);<a name="line.431"></a>
 <span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>  }<a name="line.433"></a>
+<span class="sourceLineNo">433</span>    return getListOfRegionInfos(result);<a name="line.433"></a>
 <span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>  /**<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * Gets all of the regions of the specified table. Do not use this method<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * to get meta table regions, use methods in MetaTableLocator instead.<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * @param connection connection we're using<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   * @param tableName table we're looking for<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   * @return Ordered list of {@link RegionInfo}.<a name="line.440"></a>
-<span class="sourceLineNo">441</span>   */<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  public static List&lt;RegionInfo&gt; getTableRegions(Connection connection, TableName tableName)<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  throws IOException {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    return getTableRegions(connection, tableName, false);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>  /**<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * Gets all of the regions of the specified table. Do not use this method<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   * to get meta table regions, use methods in MetaTableLocator instead.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * @param connection connection we're using<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * @param tableName table we're looking for<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * @param excludeOfflinedSplitParents If true, do not include offlined split<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * parents in the return.<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * @return Ordered list of {@link RegionInfo}.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   */<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  public static List&lt;RegionInfo&gt; getTableRegions(Connection connection, TableName tableName,<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      final boolean excludeOfflinedSplitParents) throws IOException {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result =<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      getTableRegionsAndLocations(connection, tableName, excludeOfflinedSplitParents);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    return getListOfRegionInfos(result);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>  }<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>  private static List&lt;RegionInfo&gt; getListOfRegionInfos(<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      final List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; pairs) {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    if (pairs == null || pairs.isEmpty()) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      return Collections.emptyList();<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    List&lt;RegionInfo&gt; result = new ArrayList&lt;&gt;(pairs.size());<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    for (Pair&lt;RegionInfo, ServerName&gt; pair : pairs) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      result.add(pair.getFirst());<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return result;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * @param tableName table we're working with<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @return start row for scanning META according to query type<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  public static byte[] getTableStartRowForMeta(TableName tableName, QueryType type) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    if (tableName == null) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      return null;<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    }<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    switch (type) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    case REGION:<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      byte[] startRow = new byte[tableName.getName().length + 2];<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      System.arraycopy(tableName.getName(), 0, startRow, 0, tableName.getName().length);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      startRow[startRow.length - 2] = HConstants.DELIMITER;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      startRow[startRow.length - 1] = HConstants.DELIMITER;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      return startRow;<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    case ALL:<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    case TABLE:<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    default:<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      return tableName.getName();<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  }<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>  /**<a name="line.497"></a>
-<span class="sourceLineNo">498</span>   * @param tableName table we're working with<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * @return stop row for scanning META according to query type<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   */<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  public static byte[] getTableStopRowForMeta(TableName tableName, QueryType type) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    if (tableName == null) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      return null;<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    }<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    final byte[] stopRow;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    switch (type) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    case REGION:<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      stopRow = new byte[tableName.getName().length + 3];<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      System.arraycopy(tableName.getName(), 0, stopRow, 0, tableName.getName().length);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      stopRow[stopRow.length - 3] = ' ';<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      stopRow[stopRow.length - 2] = HConstants.DELIMITER;<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      stopRow[stopRow.length - 1] = HConstants.DELIMITER;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      break;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    case ALL:<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    case TABLE:<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    default:<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      stopRow = new byte[tableName.getName().length + 1];<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      System.arraycopy(tableName.getName(), 0, stopRow, 0, tableName.getName().length);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      stopRow[stopRow.length - 1] = ' ';<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      break;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    }<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    return stopRow;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>  /**<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * This method creates a Scan object that will only scan catalog rows that<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * belong to the specified table. It doesn't specify any columns.<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   * This is a better alternative to just using a start row and scan until<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * it hits a new table since that requires parsing the HRI to get the table<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * name.<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * @param tableName bytes of table's name<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * @return configured Scan object<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   */<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  @Deprecated<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  public static Scan getScanForTableName(Connection connection, TableName tableName) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    // Start key is just the table name with delimiters<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    byte[] startKey = getTableStartRowForMeta(tableName, QueryType.REGION);<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    // Stop key appends the smallest possible char to the table name<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    byte[] stopKey = getTableStopRowForMeta(tableName, QueryType.REGION);<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>    Scan scan = getMetaScan(connection, -1);<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    scan.setStartRow(startKey);<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    scan.setStopRow(stopKey);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    return scan;<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>  private static Scan getMetaScan(Connection connection, int rowUpperLimit) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    Scan scan = new Scan();<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    int scannerCaching = connection.getConfiguration()<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        .getInt(HConstants.HBASE_META_SCANNER_CACHING,<a name="line.550"></a>
-<span class="sourceLineNo">551</span>            HConstants.DEFAULT_HBASE_META_SCANNER_CACHING);<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    if (connection.getConfiguration().getBoolean(HConstants.USE_META_REPLICAS,<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        HConstants.DEFAULT_USE_META_REPLICAS)) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      scan.setConsistency(Consistency.TIMELINE);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    if (rowUpperLimit &gt; 0) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      scan.setLimit(rowUpperLimit);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      scan.setReadType(Scan.ReadType.PREAD);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    }<a name="line.559"></a>
-<span cla

<TRUNCATED>

[22/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index b5a40f4..dda72e8 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -25,8 +25,8 @@ under the License.
     <language>en-us</language>
     <copyright>&#169;2007 - 2018 The Apache Software Foundation</copyright>
     <item>
-      <title>File: 3599,
-             Errors: 15917,
+      <title>File: 3600,
+             Errors: 15914,
              Warnings: 0,
              Infos: 0
       </title>
@@ -1147,7 +1147,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  3
+                  2
                 </td>
               </tr>
                           <tr>
@@ -29726,6 +29726,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.replication.TestRemoveFromSerialReplicationPeer.java">org/apache/hadoop/hbase/replication/TestRemoveFromSerialReplicationPeer.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.metrics2.lib.DefaultMetricsSystemHelper.java">org/apache/hadoop/metrics2/lib/DefaultMetricsSystemHelper.java</a>
                 </td>
                 <td>
@@ -41467,7 +41481,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  65
+                  63
                 </td>
               </tr>
                           <tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index d842510..4735d3a 100644
--- a/coc.html
+++ b/coc.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -365,7 +365,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index 7bdec3c..0276948 100644
--- a/dependencies.html
+++ b/dependencies.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -430,7 +430,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index fbfb817..c3f4b1d 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -1095,7 +1095,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index 3587f06..ae3854b 100644
--- a/dependency-info.html
+++ b/dependency-info.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -303,7 +303,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index c016d1a..fc4a164 100644
--- a/dependency-management.html
+++ b/dependency-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -959,7 +959,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 832980c..a2a1b92 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3768,21 +3768,21 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Sat Mar 31 14:41:18 UTC 2018"</code></td>
+<td class="colLast"><code>"Sun Apr  1 14:41:16 UTC 2018"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#revision">revision</a></code></td>
-<td class="colLast"><code>"c8dff328cb39e5a3a5a42c6b73fca7af707a0bcb"</code></td>
+<td class="colLast"><code>"1e56938757d2958631ac1ea07387eaa61997d84a"</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#srcChecksum">srcChecksum</a></code></td>
-<td class="colLast"><code>"952cd074f3c741c573ff0d57a237f941"</code></td>
+<td class="colLast"><code>"2e76f99b04d039004b3db1b121ecb142"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.url">
@@ -15253,10 +15253,10 @@
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.master.replication.ModifyPeerProcedure.SET_LAST_SEQ_ID_BATCH_SIZE">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.master.replication.ModifyPeerProcedure.UPDATE_LAST_SEQ_ID_BATCH_SIZE">
 <!--   -->
-</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
-<td><code><a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#SET_LAST_SEQ_ID_BATCH_SIZE">SET_LAST_SEQ_ID_BATCH_SIZE</a></code></td>
+</a><code>protected&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#UPDATE_LAST_SEQ_ID_BATCH_SIZE">UPDATE_LAST_SEQ_ID_BATCH_SIZE</a></code></td>
 <td class="colLast"><code>1000</code></td>
 </tr>
 </tbody>
@@ -26442,7 +26442,7 @@
 <!--   -->
 </a><code>private&nbsp;static&nbsp;final&nbsp;long</code></td>
 <td><code><a href="org/apache/hadoop/hbase/tool/Canary.html#DEFAULT_INTERVAL">DEFAULT_INTERVAL</a></code></td>
-<td class="colLast"><code>6000L</code></td>
+<td class="colLast"><code>60000L</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.tool.Canary.DEFAULT_TIMEOUT">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 4fa81d8..b7904f0 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -2525,6 +2525,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFormatReader.WalProcedureMap.html#addToLinkList-org.apache.hadoop.hbase.procedure2.store.wal.ProcedureWALFormatReader.Entry-org.apache.hadoop.hbase.procedure2.store.wal.ProcedureWALFormatReader.Entry-">addToLinkList(ProcedureWALFormatReader.Entry, ProcedureWALFormatReader.Entry)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALFormatReader.WalProcedureMap.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALFormatReader.WalProcedureMap</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#addToList-java.util.List-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationQueueStorage-">addToList(List&lt;String&gt;, String, ReplicationQueueStorage)</a></span> - Method in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">UpdatePeerConfigProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/SchemaLocking.html#addToLockedResources-java.util.List-java.util.Map-java.util.function.Function-org.apache.hadoop.hbase.procedure2.LockedResourceType-">addToLockedResources(List&lt;LockedResource&gt;, Map&lt;T, LockAndQueue&gt;, Function&lt;T, String&gt;, LockedResourceType)</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/SchemaLocking.html" title="class in org.apache.hadoop.hbase.master.procedure">SchemaLocking</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#addToMap-java.util.Map-java.lang.String-long-org.apache.hadoop.hbase.replication.ReplicationQueueStorage-">addToMap(Map&lt;String, Long&gt;, String, long, ReplicationQueueStorage)</a></span> - Method in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></dt>
@@ -50475,6 +50477,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MetaTableAccessor.html#getTableEncodedRegionNameAndLastBarrier-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">getTableEncodedRegionNameAndLastBarrier(Connection, TableName)</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MetaTableAccessor.html" title="class in org.apache.hadoop.hbase">MetaTableAccessor</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MetaTableAccessor.html#getTableEncodedRegionNamesForSerialReplication-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">getTableEncodedRegionNamesForSerialReplication(Connection, TableName)</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MetaTableAccessor.html" title="class in org.apache.hadoop.hbase">MetaTableAccessor</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#getTableFamily--">getTableFamily()</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/AsyncMetaTableAccessor.html" title="class in org.apache.hadoop.hbase">AsyncMetaTableAccessor</a></dt>
 <dd>
 <div class="block">Returns the column family used for table columns.</div>
@@ -50886,8 +50890,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/util/BackupSet.html#getTables--">getTables()</a></span> - Method in class org.apache.hadoop.hbase.backup.util.<a href="org/apache/hadoop/hbase/backup/util/BackupSet.html" title="class in org.apache.hadoop.hbase.backup.util">BackupSet</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getTables-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getTables(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/namespace/NamespaceTableAndRegionInfo.html#getTables--">getTables()</a></span> - Method in class org.apache.hadoop.hbase.namespace.<a href="org/apache/hadoop/hbase/namespace/NamespaceTableAndRegionInfo.html" title="class in org.apache.hadoop.hbase.namespace">NamespaceTableAndRegionInfo</a></dt>
 <dd>
 <div class="block">Gets the set of table names belonging to namespace.</div>
@@ -75969,6 +75971,14 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html#NextState-boolean-boolean-">NextState(boolean, boolean)</a></span> - Constructor for enum org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver">ScannerContext.NextState</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#nextStateAfterRefresh--">nextStateAfterRefresh()</a></span> - Method in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">AddPeerProcedure</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#nextStateAfterRefresh--">nextStateAfterRefresh()</a></span> - Method in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></dt>
+<dd>
+<div class="block">Implementation class can override this method.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#nextStateAfterRefresh--">nextStateAfterRefresh()</a></span> - Method in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">UpdatePeerConfigProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/compactions/CurrentHourProvider.html#nextTick--">nextTick()</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.compactions.<a href="org/apache/hadoop/hbase/regionserver/compactions/CurrentHourProvider.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CurrentHourProvider</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/ConcatenatedLists.Iterator.html#nextWasCalled">nextWasCalled</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/ConcatenatedLists.Iterator.html" title="class in org.apache.hadoop.hbase.util">ConcatenatedLists.Iterator</a></dt>
@@ -90170,8 +90180,14 @@ service.</div>
 <dd>
 <div class="block">Remove all the max sequence id record for the given peer.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#removeLastSequenceIds-java.lang.String-java.util.List-">removeLastSequenceIds(String, List&lt;String&gt;)</a></span> - Method in interface org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueueStorage</a></dt>
+<dd>
+<div class="block">Remove the max sequence id record for the given peer and regions.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#removeLastSequenceIds-java.lang.String-">removeLastSequenceIds(String)</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html" title="class in org.apache.hadoop.hbase.replication">ZKReplicationQueueStorage</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#removeLastSequenceIds-java.lang.String-java.util.List-">removeLastSequenceIds(String, List&lt;String&gt;)</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html" title="class in org.apache.hadoop.hbase.replication">ZKReplicationQueueStorage</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/Leases.html#removeLease-java.lang.String-">removeLease(String)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/Leases.html" title="class in org.apache.hadoop.hbase.regionserver">Leases</a></dt>
 <dd>
 <div class="block">Remove named lease.</div>
@@ -90681,14 +90697,6 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#reopenRegions-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">reopenRegions(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#reopenRegionsAfterRefresh--">reopenRegionsAfterRefresh()</a></span> - Method in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">AddPeerProcedure</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#reopenRegionsAfterRefresh--">reopenRegionsAfterRefresh()</a></span> - Method in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></dt>
-<dd>
-<div class="block">Implementation class can override this method.</div>
-</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#reopenRegionsAfterRefresh--">reopenRegionsAfterRefresh()</a></span> - Method in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">UpdatePeerConfigProcedure</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/fs/HFileSystem.ReorderBlocks.html#reorderBlocks-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hdfs.protocol.LocatedBlocks-java.lang.String-">reorderBlocks(Configuration, LocatedBlocks, String)</a></span> - Method in interface org.apache.hadoop.hbase.fs.<a href="org/apache/hadoop/hbase/fs/HFileSystem.ReorderBlocks.html" title="interface in org.apache.hadoop.hbase.fs">HFileSystem.ReorderBlocks</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/fs/HFileSystem.ReorderWALBlocks.html#reorderBlocks-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hdfs.protocol.LocatedBlocks-java.lang.String-">reorderBlocks(Configuration, LocatedBlocks, String)</a></span> - Method in class org.apache.hadoop.hbase.fs.<a href="org/apache/hadoop/hbase/fs/HFileSystem.ReorderWALBlocks.html" title="class in org.apache.hadoop.hbase.fs">HFileSystem.ReorderWALBlocks</a></dt>
@@ -96002,6 +96010,8 @@ service.</div>
 <dd>
 <div class="block">Performs a scan of META table.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MetaTableAccessor.html#scanMeta-org.apache.hadoop.hbase.client.Connection-byte:A-byte:A-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-org.apache.hadoop.hbase.filter.Filter-int-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-">scanMeta(Connection, byte[], byte[], MetaTableAccessor.QueryType, Filter, int, MetaTableAccessor.Visitor)</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MetaTableAccessor.html" title="class in org.apache.hadoop.hbase">MetaTableAccessor</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MetaTableAccessor.html#scanMetaForTableRegions-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-org.apache.hadoop.hbase.TableName-">scanMetaForTableRegions(Connection, MetaTableAccessor.Visitor, TableName)</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MetaTableAccessor.html" title="class in org.apache.hadoop.hbase">MetaTableAccessor</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/AbstractClientScanner.html#scanMetrics">scanMetrics</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/AbstractClientScanner.html" title="class in org.apache.hadoop.hbase.client">AbstractClientScanner</a></dt>
@@ -98288,8 +98298,6 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#SET_KEY_PREFIX">SET_KEY_PREFIX</a></span> - Static variable in class org.apache.hadoop.hbase.backup.impl.<a href="org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupSystemTable</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#SET_LAST_SEQ_ID_BATCH_SIZE">SET_LAST_SEQ_ID_BATCH_SIZE</a></span> - Static variable in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/impl/BackupCommands.BackupSetCommand.html#SET_LIST_CMD">SET_LIST_CMD</a></span> - Static variable in class org.apache.hadoop.hbase.backup.impl.<a href="org/apache/hadoop/hbase/backup/impl/BackupCommands.BackupSetCommand.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupCommands.BackupSetCommand</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/impl/BackupCommands.BackupSetCommand.html#SET_REMOVE_CMD">SET_REMOVE_CMD</a></span> - Static variable in class org.apache.hadoop.hbase.backup.impl.<a href="org/apache/hadoop/hbase/backup/impl/BackupCommands.BackupSetCommand.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupCommands.BackupSetCommand</a></dt>
@@ -100147,6 +100155,10 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/ScannerContext.html#setLastPeekedCell-org.apache.hadoop.hbase.Cell-">setLastPeekedCell(Cell)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setLastPushedSequenceId-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">setLastPushedSequenceId(MasterProcedureEnv, ReplicationPeerConfig)</a></span> - Method in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setLastPushedSequenceIdForTable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.TableName-java.util.Map-">setLastPushedSequenceIdForTable(MasterProcedureEnv, TableName, Map&lt;String, Long&gt;)</a></span> - Method in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ServerMetricsBuilder.html#setLastReportTimestamp-long-">setLastReportTimestamp(long)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ServerMetricsBuilder.html" title="class in org.apache.hadoop.hbase">ServerMetricsBuilder</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RegionSplitter.NumberStringSplit.html#setLastRow-java.lang.String-">setLastRow(String)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RegionSplitter.NumberStringSplit.html" title="class in org.apache.hadoop.hbase.util">RegionSplitter.NumberStringSplit</a></dt>
@@ -100167,8 +100179,6 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html#setLastSeqId-java.lang.String-long-">setLastSeqId(String, long)</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html" title="class in org.apache.hadoop.hbase.replication.regionserver">WALEntryBatch</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setLastSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">setLastSequenceIdForSerialPeer(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#setLastSequenceIds-java.lang.String-java.util.Map-">setLastSequenceIds(String, Map&lt;String, Long&gt;)</a></span> - Method in interface org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueueStorage</a></dt>
 <dd>
 <div class="block">Set the max sequence id of a bunch of regions for a given peer.</div>
@@ -114864,6 +114874,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/MasterMaintenanceModeTracker.html#update--">update()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/MasterMaintenanceModeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">MasterMaintenanceModeTracker</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#UPDATE_LAST_SEQ_ID_BATCH_SIZE">UPDATE_LAST_SEQ_ID_BATCH_SIZE</a></span> - Static variable in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/ConnectionCache.ConnectionInfo.html#updateAccessTime--">updateAccessTime()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/ConnectionCache.ConnectionInfo.html" title="class in org.apache.hadoop.hbase.util">ConnectionCache.ConnectionInfo</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/access/AccessController.html#updateACL-org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment-java.util.Map-">updateACL(RegionCoprocessorEnvironment, Map&lt;byte[], List&lt;Cell&gt;&gt;)</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/AccessController.html" title="class in org.apache.hadoop.hbase.security.access">AccessController</a></dt>
@@ -115340,6 +115352,12 @@ service.</div>
 <dd>
 <div class="block">Updates last flushed sequence Ids for the regions on server sn</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#updateLastPushedSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateLastPushedSequenceIdForSerialPeer(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">AddPeerProcedure</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#updateLastPushedSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateLastPushedSequenceIdForSerialPeer(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">ModifyPeerProcedure</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#updateLastPushedSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateLastPushedSequenceIdForSerialPeer(MasterProcedureEnv)</a></span> - Method in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html" title="class in org.apache.hadoop.hbase.master.replication">UpdatePeerConfigProcedure</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mob/compactions/PartitionedMobCompactionRequest.CompactionPartitionId.html#updateLatestDate-java.lang.String-">updateLatestDate(String)</a></span> - Method in class org.apache.hadoop.hbase.mob.compactions.<a href="org/apache/hadoop/hbase/mob/compactions/PartitionedMobCompactionRequest.CompactionPartitionId.html" title="class in org.apache.hadoop.hbase.mob.compactions">PartitionedMobCompactionRequest.CompactionPartitionId</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/constraint/Constraints.html#updateLatestPriority-org.apache.hadoop.hbase.HTableDescriptor-long-">updateLatestPriority(HTableDescriptor, long)</a></span> - Static method in class org.apache.hadoop.hbase.constraint.<a href="org/apache/hadoop/hbase/constraint/Constraints.html" title="class in org.apache.hadoop.hbase.constraint">Constraints</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html b/devapidocs/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html
index eda9251..8d7309b 100644
--- a/devapidocs/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html
+++ b/devapidocs/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html
@@ -123,7 +123,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public static enum <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.192">MetaTableAccessor.QueryType</a>
+public static enum <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.194">MetaTableAccessor.QueryType</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">Enum</a>&lt;<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&gt;</pre>
 </li>
 </ul>
@@ -240,7 +240,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>ALL</h4>
-<pre>public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html#line.193">ALL</a></pre>
+<pre>public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html#line.195">ALL</a></pre>
 </li>
 </ul>
 <a name="REGION">
@@ -249,7 +249,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>REGION</h4>
-<pre>public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html#line.194">REGION</a></pre>
+<pre>public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html#line.196">REGION</a></pre>
 </li>
 </ul>
 <a name="TABLE">
@@ -258,7 +258,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>TABLE</h4>
-<pre>public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html#line.195">TABLE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html#line.197">TABLE</a></pre>
 </li>
 </ul>
 <a name="REPLICATION">
@@ -267,7 +267,7 @@ the order they are declared.</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>REPLICATION</h4>
-<pre>public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html#line.196">REPLICATION</a></pre>
+<pre>public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html#line.198">REPLICATION</a></pre>
 </li>
 </ul>
 </li>
@@ -284,7 +284,7 @@ the order they are declared.</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>families</h4>
-<pre>private final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html#line.198">families</a></pre>
+<pre>private final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html#line.200">families</a></pre>
 </li>
 </ul>
 </li>
@@ -301,7 +301,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>values</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html#line.2156">values</a>()</pre>
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html#line.2168">values</a>()</pre>
 <div class="block">Returns an array containing the constants of this enum type, in
 the order they are declared.  This method may be used to iterate
 over the constants as follows:
@@ -321,7 +321,7 @@ for (MetaTableAccessor.QueryType c : MetaTableAccessor.QueryType.values())
 <ul class="blockList">
 <li class="blockList">
 <h4>valueOf</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html#line.2156">valueOf</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;name)</pre>
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html#line.2168">valueOf</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;name)</pre>
 <div class="block">Returns the enum constant of this type with the specified name.
 The string must match <i>exactly</i> an identifier used to declare an
 enum constant in this type.  (Extraneous whitespace characters are 
@@ -343,7 +343,7 @@ not permitted.)</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getFamilies</h4>
-<pre>byte[][]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html#line.204">getFamilies</a>()</pre>
+<pre>byte[][]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html#line.206">getFamilies</a>()</pre>
 </li>
 </ul>
 </li>


[04/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html
index 05fc31d..191bf86 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html
@@ -26,128 +26,212 @@
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.master.replication;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
 <span class="sourceLineNo">020</span>import java.io.IOException;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.client.replication.ReplicationPeerConfigUtil;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.slf4j.Logger;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.slf4j.LoggerFactory;<a name="line.31"></a>
-<span class="sourceLineNo">032</span><a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.UpdatePeerConfigStateData;<a name="line.33"></a>
-<span class="sourceLineNo">034</span><a name="line.34"></a>
-<span class="sourceLineNo">035</span>/**<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * The procedure for updating the config for a replication peer.<a name="line.36"></a>
-<span class="sourceLineNo">037</span> */<a name="line.37"></a>
-<span class="sourceLineNo">038</span>@InterfaceAudience.Private<a name="line.38"></a>
-<span class="sourceLineNo">039</span>public class UpdatePeerConfigProcedure extends ModifyPeerProcedure {<a name="line.39"></a>
-<span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>  private static final Logger LOG = LoggerFactory.getLogger(UpdatePeerConfigProcedure.class);<a name="line.41"></a>
-<span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>  private ReplicationPeerConfig peerConfig;<a name="line.43"></a>
+<span class="sourceLineNo">021</span>import java.util.ArrayList;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.HashMap;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.List;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.util.Map;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.TableName;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.client.replication.ReplicationPeerConfigUtil;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.master.MasterCoprocessorHost;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.replication.ReplicationQueueStorage;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.slf4j.Logger;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.slf4j.LoggerFactory;<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.PeerModificationState;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.UpdatePeerConfigStateData;<a name="line.43"></a>
 <span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>  private ReplicationPeerConfig oldPeerConfig;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>  private boolean enabled;<a name="line.47"></a>
-<span class="sourceLineNo">048</span><a name="line.48"></a>
-<span class="sourceLineNo">049</span>  public UpdatePeerConfigProcedure() {<a name="line.49"></a>
-<span class="sourceLineNo">050</span>  }<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>  public UpdatePeerConfigProcedure(String peerId, ReplicationPeerConfig peerConfig) {<a name="line.52"></a>
-<span class="sourceLineNo">053</span>    super(peerId);<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    this.peerConfig = peerConfig;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  }<a name="line.55"></a>
+<span class="sourceLineNo">045</span>/**<a name="line.45"></a>
+<span class="sourceLineNo">046</span> * The procedure for updating the config for a replication peer.<a name="line.46"></a>
+<span class="sourceLineNo">047</span> */<a name="line.47"></a>
+<span class="sourceLineNo">048</span>@InterfaceAudience.Private<a name="line.48"></a>
+<span class="sourceLineNo">049</span>public class UpdatePeerConfigProcedure extends ModifyPeerProcedure {<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private static final Logger LOG = LoggerFactory.getLogger(UpdatePeerConfigProcedure.class);<a name="line.51"></a>
+<span class="sourceLineNo">052</span><a name="line.52"></a>
+<span class="sourceLineNo">053</span>  private ReplicationPeerConfig peerConfig;<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  private ReplicationPeerConfig oldPeerConfig;<a name="line.55"></a>
 <span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>  @Override<a name="line.57"></a>
-<span class="sourceLineNo">058</span>  public PeerOperationType getPeerOperationType() {<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    return PeerOperationType.UPDATE_CONFIG;<a name="line.59"></a>
+<span class="sourceLineNo">057</span>  private boolean enabled;<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  public UpdatePeerConfigProcedure() {<a name="line.59"></a>
 <span class="sourceLineNo">060</span>  }<a name="line.60"></a>
 <span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>  @Override<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  protected boolean reopenRegionsAfterRefresh() {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    // If we remove some tables from the peer config then we do not need to enter the extra states<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    // for serial replication. Could try to optimize later since it is not easy to determine this...<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    return peerConfig.isSerial() &amp;&amp; (!oldPeerConfig.isSerial() ||<a name="line.66"></a>
-<span class="sourceLineNo">067</span>      !ReplicationUtils.isNamespacesAndTableCFsEqual(peerConfig, oldPeerConfig));<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  }<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>  @Override<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  protected boolean enablePeerBeforeFinish() {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    // do not need to test reopenRegionsAfterRefresh since we can only enter here if<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    // reopenRegionsAfterRefresh returns true.<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    return enabled;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  }<a name="line.75"></a>
-<span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span>  @Override<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  protected ReplicationPeerConfig getOldPeerConfig() {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    return oldPeerConfig;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  }<a name="line.80"></a>
-<span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>  @Override<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  protected ReplicationPeerConfig getNewPeerConfig() {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    return peerConfig;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  }<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>  @Override<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  protected void prePeerModification(MasterProcedureEnv env) throws IOException {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    if (cpHost != null) {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      cpHost.preUpdateReplicationPeerConfig(peerId, peerConfig);<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    }<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    ReplicationPeerDescription desc =<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      env.getReplicationPeerManager().preUpdatePeerConfig(peerId, peerConfig);<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    oldPeerConfig = desc.getPeerConfig();<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    enabled = desc.isEnabled();<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  }<a name="line.97"></a>
-<span class="sourceLineNo">098</span><a name="line.98"></a>
-<span class="sourceLineNo">099</span>  @Override<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  protected void updatePeerStorage(MasterProcedureEnv env) throws ReplicationException {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    env.getReplicationPeerManager().updatePeerConfig(peerId, peerConfig);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    if (enabled &amp;&amp; reopenRegionsAfterRefresh()) {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      env.getReplicationPeerManager().disablePeer(peerId);<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  }<a name="line.105"></a>
-<span class="sourceLineNo">106</span><a name="line.106"></a>
-<span class="sourceLineNo">107</span>  @Override<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  protected void postPeerModification(MasterProcedureEnv env)<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      throws IOException, ReplicationException {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    if (oldPeerConfig.isSerial() &amp;&amp; !peerConfig.isSerial()) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      env.getReplicationPeerManager().removeAllLastPushedSeqIds(peerId);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    LOG.info("Successfully updated peer config of {} to {}", peerId, peerConfig);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    if (cpHost != null) {<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      cpHost.postUpdateReplicationPeerConfig(peerId, peerConfig);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    }<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  }<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>  @Override<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  protected void serializeStateData(ProcedureStateSerializer serializer) throws IOException {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    super.serializeStateData(serializer);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    UpdatePeerConfigStateData.Builder builder = UpdatePeerConfigStateData.newBuilder()<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      .setPeerConfig(ReplicationPeerConfigUtil.convert(peerConfig));<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    if (oldPeerConfig != null) {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      builder.setOldPeerConfig(ReplicationPeerConfigUtil.convert(oldPeerConfig));<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    }<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    serializer.serialize(builder.build());<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  }<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span>  @Override<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  protected void deserializeStateData(ProcedureStateSerializer serializer) throws IOException {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    super.deserializeStateData(serializer);<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    UpdatePeerConfigStateData data = serializer.deserialize(UpdatePeerConfigStateData.class);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    peerConfig = ReplicationPeerConfigUtil.convert(data.getPeerConfig());<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    if (data.hasOldPeerConfig()) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      oldPeerConfig = ReplicationPeerConfigUtil.convert(data.getOldPeerConfig());<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    } else {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      oldPeerConfig = null;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    }<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  }<a name="line.141"></a>
-<span class="sourceLineNo">142</span>}<a name="line.142"></a>
+<span class="sourceLineNo">062</span>  public UpdatePeerConfigProcedure(String peerId, ReplicationPeerConfig peerConfig) {<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    super(peerId);<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    this.peerConfig = peerConfig;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  }<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  @Override<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  public PeerOperationType getPeerOperationType() {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    return PeerOperationType.UPDATE_CONFIG;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  }<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private void addToList(List&lt;String&gt; encodedRegionNames, String encodedRegionName,<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      ReplicationQueueStorage queueStorage) throws ReplicationException {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    encodedRegionNames.add(encodedRegionName);<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    if (encodedRegionNames.size() &gt;= UPDATE_LAST_SEQ_ID_BATCH_SIZE) {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      queueStorage.removeLastSequenceIds(peerId, encodedRegionNames);<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      encodedRegionNames.clear();<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    }<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  @Override<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  protected PeerModificationState nextStateAfterRefresh() {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    if (peerConfig.isSerial()) {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      if (oldPeerConfig.isSerial()) {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>        // both serial, then if the ns/table-cfs configs are not changed, just go with the normal<a name="line.85"></a>
+<span class="sourceLineNo">086</span>        // way, otherwise we need to reopen the regions for the newly added tables.<a name="line.86"></a>
+<span class="sourceLineNo">087</span>        return ReplicationUtils.isNamespacesAndTableCFsEqual(peerConfig, oldPeerConfig)<a name="line.87"></a>
+<span class="sourceLineNo">088</span>          ? super.nextStateAfterRefresh()<a name="line.88"></a>
+<span class="sourceLineNo">089</span>          : PeerModificationState.SERIAL_PEER_REOPEN_REGIONS;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>      } else {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>        // we change the peer to serial, need to reopen all regions<a name="line.91"></a>
+<span class="sourceLineNo">092</span>        return PeerModificationState.SERIAL_PEER_REOPEN_REGIONS;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      }<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    } else {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      if (oldPeerConfig.isSerial()) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>        // we remove the serial flag for peer, then we do not need to reopen all regions, but we<a name="line.96"></a>
+<span class="sourceLineNo">097</span>        // need to remove the last pushed sequence ids.<a name="line.97"></a>
+<span class="sourceLineNo">098</span>        return PeerModificationState.SERIAL_PEER_UPDATE_LAST_PUSHED_SEQ_ID;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      } else {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>        // not serial for both, just go with the normal way.<a name="line.100"></a>
+<span class="sourceLineNo">101</span>        return super.nextStateAfterRefresh();<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      }<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    }<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  }<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>  @Override<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  protected void updateLastPushedSequenceIdForSerialPeer(MasterProcedureEnv env)<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      throws IOException, ReplicationException {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    if (!oldPeerConfig.isSerial()) {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      assert peerConfig.isSerial();<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      // change to serial<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      setLastPushedSequenceId(env, peerConfig);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      return;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    }<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    if (!peerConfig.isSerial()) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      // remove the serial flag<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      env.getReplicationPeerManager().removeAllLastPushedSeqIds(peerId);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      return;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    }<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    // enter here means peerConfig and oldPeerConfig are both serial, let's find out the diffs and<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    // process them<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    ReplicationQueueStorage queueStorage = env.getReplicationPeerManager().getQueueStorage();<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    Connection conn = env.getMasterServices().getConnection();<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    Map&lt;String, Long&gt; lastSeqIds = new HashMap&lt;String, Long&gt;();<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    List&lt;String&gt; encodedRegionNames = new ArrayList&lt;&gt;();<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    for (TableDescriptor td : env.getMasterServices().getTableDescriptors().getAll().values()) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      if (!td.hasGlobalReplicationScope()) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>        continue;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      }<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      TableName tn = td.getTableName();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      if (ReplicationUtils.contains(oldPeerConfig, tn)) {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>        if (!ReplicationUtils.contains(peerConfig, tn)) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>          // removed from peer config<a name="line.133"></a>
+<span class="sourceLineNo">134</span>          for (String encodedRegionName : MetaTableAccessor<a name="line.134"></a>
+<span class="sourceLineNo">135</span>            .getTableEncodedRegionNamesForSerialReplication(conn, tn)) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>            addToList(encodedRegionNames, encodedRegionName, queueStorage);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>          }<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        }<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      } else if (ReplicationUtils.contains(peerConfig, tn)) {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        // newly added to peer config<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        setLastPushedSequenceIdForTable(env, tn, lastSeqIds);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      }<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    }<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    if (!encodedRegionNames.isEmpty()) {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      queueStorage.removeLastSequenceIds(peerId, encodedRegionNames);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    }<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    if (!lastSeqIds.isEmpty()) {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      queueStorage.setLastSequenceIds(peerId, lastSeqIds);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    }<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  @Override<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  protected boolean enablePeerBeforeFinish() {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    // do not need to test reopenRegionsAfterRefresh since we can only enter here if<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    // reopenRegionsAfterRefresh returns true.<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    return enabled;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  }<a name="line.157"></a>
+<span class="sourceLineNo">158</span><a name="line.158"></a>
+<span class="sourceLineNo">159</span>  @Override<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  protected ReplicationPeerConfig getOldPeerConfig() {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    return oldPeerConfig;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>  @Override<a name="line.164"></a>
+<span class="sourceLineNo">165</span>  protected ReplicationPeerConfig getNewPeerConfig() {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    return peerConfig;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>  }<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>  @Override<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  protected void prePeerModification(MasterProcedureEnv env) throws IOException {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    if (cpHost != null) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      cpHost.preUpdateReplicationPeerConfig(peerId, peerConfig);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    }<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    ReplicationPeerDescription desc =<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      env.getReplicationPeerManager().preUpdatePeerConfig(peerId, peerConfig);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    oldPeerConfig = desc.getPeerConfig();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    enabled = desc.isEnabled();<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  }<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>  @Override<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  protected void updatePeerStorage(MasterProcedureEnv env) throws ReplicationException {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    env.getReplicationPeerManager().updatePeerConfig(peerId, peerConfig);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    // if we need to jump to the special states for serial peers, then we need to disable the peer<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    // first if it is not disabled yet.<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    if (enabled &amp;&amp; nextStateAfterRefresh() != super.nextStateAfterRefresh()) {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      env.getReplicationPeerManager().disablePeer(peerId);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>  @Override<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  protected void postPeerModification(MasterProcedureEnv env)<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      throws IOException, ReplicationException {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    if (oldPeerConfig.isSerial() &amp;&amp; !peerConfig.isSerial()) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      env.getReplicationPeerManager().removeAllLastPushedSeqIds(peerId);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    LOG.info("Successfully updated peer config of {} to {}", peerId, peerConfig);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    MasterCoprocessorHost cpHost = env.getMasterCoprocessorHost();<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    if (cpHost != null) {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      cpHost.postUpdateReplicationPeerConfig(peerId, peerConfig);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  }<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>  @Override<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  protected void serializeStateData(ProcedureStateSerializer serializer) throws IOException {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    super.serializeStateData(serializer);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    UpdatePeerConfigStateData.Builder builder = UpdatePeerConfigStateData.newBuilder()<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      .setPeerConfig(ReplicationPeerConfigUtil.convert(peerConfig));<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    if (oldPeerConfig != null) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      builder.setOldPeerConfig(ReplicationPeerConfigUtil.convert(oldPeerConfig));<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    }<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    serializer.serialize(builder.build());<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
+<span class="sourceLineNo">214</span><a name="line.214"></a>
+<span class="sourceLineNo">215</span>  @Override<a name="line.215"></a>
+<span class="sourceLineNo">216</span>  protected void deserializeStateData(ProcedureStateSerializer serializer) throws IOException {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    super.deserializeStateData(serializer);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    UpdatePeerConfigStateData data = serializer.deserialize(UpdatePeerConfigStateData.class);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    peerConfig = ReplicationPeerConfigUtil.convert(data.getPeerConfig());<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    if (data.hasOldPeerConfig()) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      oldPeerConfig = ReplicationPeerConfigUtil.convert(data.getOldPeerConfig());<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    } else {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      oldPeerConfig = null;<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
+<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
+<span class="sourceLineNo">226</span>}<a name="line.226"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html
index 85bc027..a9cc532 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html
@@ -99,109 +99,118 @@
 <span class="sourceLineNo">091</span>   * @param peerId peer id<a name="line.91"></a>
 <span class="sourceLineNo">092</span>   */<a name="line.92"></a>
 <span class="sourceLineNo">093</span>  void removeLastSequenceIds(String peerId) throws ReplicationException;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  /**<a name="line.94"></a>
-<span class="sourceLineNo">095</span>   * Get the current position for a specific WAL in a given queue for a given regionserver.<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * @param serverName the name of the regionserver<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * @param queueId a String that identifies the queue<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   * @param fileName name of the WAL<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * @return the current position in the file<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   */<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  long getWALPosition(ServerName serverName, String queueId, String fileName)<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      throws ReplicationException;<a name="line.102"></a>
-<span class="sourceLineNo">103</span><a name="line.103"></a>
-<span class="sourceLineNo">104</span>  /**<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   * Get a list of all WALs in the given queue on the given region server.<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   * @param serverName the server name of the region server that owns the queue<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   * @param queueId a String that identifies the queue<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   * @return a list of WALs<a name="line.108"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
+<span class="sourceLineNo">095</span>  /**<a name="line.95"></a>
+<span class="sourceLineNo">096</span>   * Remove the max sequence id record for the given peer and regions.<a name="line.96"></a>
+<span class="sourceLineNo">097</span>   * @param peerId peer id<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   * @param encodedRegionNames the encoded region names<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   */<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  void removeLastSequenceIds(String peerId, List&lt;String&gt; encodedRegionNames)<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      throws ReplicationException;<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>  /**<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   * Get the current position for a specific WAL in a given queue for a given regionserver.<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * @param serverName the name of the regionserver<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * @param queueId a String that identifies the queue<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @param fileName name of the WAL<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @return the current position in the file<a name="line.108"></a>
 <span class="sourceLineNo">109</span>   */<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  List&lt;String&gt; getWALsInQueue(ServerName serverName, String queueId) throws ReplicationException;<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>  /**<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * Get a list of all queues for the specified region server.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   * @param serverName the server name of the region server that owns the set of queues<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * @return a list of queueIds<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   */<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  List&lt;String&gt; getAllQueues(ServerName serverName) throws ReplicationException;<a name="line.117"></a>
-<span class="sourceLineNo">118</span><a name="line.118"></a>
-<span class="sourceLineNo">119</span>  /**<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   * Change ownership for the queue identified by queueId and belongs to a dead region server.<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   * @param sourceServerName the name of the dead region server<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   * @param destServerName the name of the target region server<a name="line.122"></a>
-<span class="sourceLineNo">123</span>   * @param queueId the id of the queue<a name="line.123"></a>
-<span class="sourceLineNo">124</span>   * @return the new PeerId and A SortedSet of WALs in its queue<a name="line.124"></a>
+<span class="sourceLineNo">110</span>  long getWALPosition(ServerName serverName, String queueId, String fileName)<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      throws ReplicationException;<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  /**<a name="line.113"></a>
+<span class="sourceLineNo">114</span>   * Get a list of all WALs in the given queue on the given region server.<a name="line.114"></a>
+<span class="sourceLineNo">115</span>   * @param serverName the server name of the region server that owns the queue<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   * @param queueId a String that identifies the queue<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   * @return a list of WALs<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   */<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  List&lt;String&gt; getWALsInQueue(ServerName serverName, String queueId) throws ReplicationException;<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>  /**<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * Get a list of all queues for the specified region server.<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   * @param serverName the server name of the region server that owns the set of queues<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   * @return a list of queueIds<a name="line.124"></a>
 <span class="sourceLineNo">125</span>   */<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  Pair&lt;String, SortedSet&lt;String&gt;&gt; claimQueue(ServerName sourceServerName, String queueId,<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      ServerName destServerName) throws ReplicationException;<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>  /**<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   * Remove the record of region server if the queue is empty.<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  void removeReplicatorIfQueueIsEmpty(ServerName serverName) throws ReplicationException;<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  /**<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   * Get a list of all region servers that have outstanding replication queues. These servers could<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   * be alive, dead or from a previous run of the cluster.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>   * @return a list of server names<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   */<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  List&lt;ServerName&gt; getListOfReplicators() throws ReplicationException;<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  /**<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   * Load all wals in all replication queues. This method guarantees to return a snapshot which<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * contains all WALs at the start of this call even there is concurrent queue failover. However,<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * some newly created WALs during the call may not be included.<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  Set&lt;String&gt; getAllWALs() throws ReplicationException;<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>  /**<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * Add a peer to hfile reference queue if peer does not exist.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * @param peerId peer cluster id to be added<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * @throws ReplicationException if fails to add a peer id to hfile reference queue<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  void addPeerToHFileRefs(String peerId) throws ReplicationException;<a name="line.153"></a>
-<span class="sourceLineNo">154</span><a name="line.154"></a>
-<span class="sourceLineNo">155</span>  /**<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   * Remove a peer from hfile reference queue.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * @param peerId peer cluster id to be removed<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   */<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  void removePeerFromHFileRefs(String peerId) throws ReplicationException;<a name="line.159"></a>
-<span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  /**<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * Add new hfile references to the queue.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * @param peerId peer cluster id to which the hfiles need to be replicated<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * @param pairs list of pairs of { HFile location in staging dir, HFile path in region dir which<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   *          will be added in the queue }<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @throws ReplicationException if fails to add a hfile reference<a name="line.166"></a>
+<span class="sourceLineNo">126</span>  List&lt;String&gt; getAllQueues(ServerName serverName) throws ReplicationException;<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  /**<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   * Change ownership for the queue identified by queueId and belongs to a dead region server.<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * @param sourceServerName the name of the dead region server<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   * @param destServerName the name of the target region server<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   * @param queueId the id of the queue<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   * @return the new PeerId and A SortedSet of WALs in its queue<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   */<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  Pair&lt;String, SortedSet&lt;String&gt;&gt; claimQueue(ServerName sourceServerName, String queueId,<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      ServerName destServerName) throws ReplicationException;<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  /**<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * Remove the record of region server if the queue is empty.<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   */<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  void removeReplicatorIfQueueIsEmpty(ServerName serverName) throws ReplicationException;<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  /**<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * Get a list of all region servers that have outstanding replication queues. These servers could<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * be alive, dead or from a previous run of the cluster.<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   * @return a list of server names<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   */<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  List&lt;ServerName&gt; getListOfReplicators() throws ReplicationException;<a name="line.148"></a>
+<span class="sourceLineNo">149</span><a name="line.149"></a>
+<span class="sourceLineNo">150</span>  /**<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * Load all wals in all replication queues. This method guarantees to return a snapshot which<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * contains all WALs at the start of this call even there is concurrent queue failover. However,<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * some newly created WALs during the call may not be included.<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   */<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  Set&lt;String&gt; getAllWALs() throws ReplicationException;<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>  /**<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   * Add a peer to hfile reference queue if peer does not exist.<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   * @param peerId peer cluster id to be added<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   * @throws ReplicationException if fails to add a peer id to hfile reference queue<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   */<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  void addPeerToHFileRefs(String peerId) throws ReplicationException;<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>  /**<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * Remove a peer from hfile reference queue.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * @param peerId peer cluster id to be removed<a name="line.166"></a>
 <span class="sourceLineNo">167</span>   */<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  void addHFileRefs(String peerId, List&lt;Pair&lt;Path, Path&gt;&gt; pairs) throws ReplicationException;<a name="line.168"></a>
+<span class="sourceLineNo">168</span>  void removePeerFromHFileRefs(String peerId) throws ReplicationException;<a name="line.168"></a>
 <span class="sourceLineNo">169</span><a name="line.169"></a>
 <span class="sourceLineNo">170</span>  /**<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * Remove hfile references from the queue.<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * @param peerId peer cluster id from which this hfile references needs to be removed<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * @param files list of hfile references to be removed<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   */<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  void removeHFileRefs(String peerId, List&lt;String&gt; files) throws ReplicationException;<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>  /**<a name="line.177"></a>
-<span class="sourceLineNo">178</span>   * Get list of all peers from hfile reference queue.<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   * @return a list of peer ids<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  List&lt;String&gt; getAllPeersFromHFileRefsQueue() throws ReplicationException;<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  /**<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * Get a list of all hfile references in the given peer.<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * @param peerId a String that identifies the peer<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * @return a list of hfile references<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   */<a name="line.187"></a>
-<span class="sourceLineNo">188</span>  List&lt;String&gt; getReplicableHFiles(String peerId) throws ReplicationException;<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>  /**<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * Load all hfile references in all replication queues. This method guarantees to return a<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * snapshot which contains all hfile references at the start of this call. However, some newly<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * created hfile references during the call may not be included.<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   */<a name="line.194"></a>
-<span class="sourceLineNo">195</span>  Set&lt;String&gt; getAllHFileRefs() throws ReplicationException;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>}<a name="line.196"></a>
+<span class="sourceLineNo">171</span>   * Add new hfile references to the queue.<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   * @param peerId peer cluster id to which the hfiles need to be replicated<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * @param pairs list of pairs of { HFile location in staging dir, HFile path in region dir which<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   *          will be added in the queue }<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   * @throws ReplicationException if fails to add a hfile reference<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   */<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  void addHFileRefs(String peerId, List&lt;Pair&lt;Path, Path&gt;&gt; pairs) throws ReplicationException;<a name="line.177"></a>
+<span class="sourceLineNo">178</span><a name="line.178"></a>
+<span class="sourceLineNo">179</span>  /**<a name="line.179"></a>
+<span class="sourceLineNo">180</span>   * Remove hfile references from the queue.<a name="line.180"></a>
+<span class="sourceLineNo">181</span>   * @param peerId peer cluster id from which this hfile references needs to be removed<a name="line.181"></a>
+<span class="sourceLineNo">182</span>   * @param files list of hfile references to be removed<a name="line.182"></a>
+<span class="sourceLineNo">183</span>   */<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  void removeHFileRefs(String peerId, List&lt;String&gt; files) throws ReplicationException;<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  /**<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * Get list of all peers from hfile reference queue.<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   * @return a list of peer ids<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  List&lt;String&gt; getAllPeersFromHFileRefsQueue() throws ReplicationException;<a name="line.190"></a>
+<span class="sourceLineNo">191</span><a name="line.191"></a>
+<span class="sourceLineNo">192</span>  /**<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * Get a list of all hfile references in the given peer.<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * @param peerId a String that identifies the peer<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * @return a list of hfile references<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  List&lt;String&gt; getReplicableHFiles(String peerId) throws ReplicationException;<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>  /**<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * Load all hfile references in all replication queues. This method guarantees to return a<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   * snapshot which contains all hfile references at the start of this call. However, some newly<a name="line.201"></a>
+<span class="sourceLineNo">202</span>   * created hfile references during the call may not be included.<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   */<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  Set&lt;String&gt; getAllHFileRefs() throws ReplicationException;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>}<a name="line.205"></a>
 
 
 


[21/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/MetaTableAccessor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/MetaTableAccessor.html b/devapidocs/org/apache/hadoop/hbase/MetaTableAccessor.html
index 63f7c72..d0937b2 100644
--- a/devapidocs/org/apache/hadoop/hbase/MetaTableAccessor.html
+++ b/devapidocs/org/apache/hadoop/hbase/MetaTableAccessor.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":41,"i13":9,"i14":9,"i15":9,"i16":9,"i17":9,"i18":9,"i19":9,"i20":9,"i21":9,"i22":9,"i23":9,"i24":9,"i25":9,"i26":9,"i27":9,"i28":9,"i29":9,"i30":9,"i31":9,"i32":9,"i33":9,"i34":9,"i35":9,"i36":9,"i37":9,"i38":41,"i39":9,"i40":9,"i41":9,"i42":9,"i43":9,"i44":9,"i45":9,"i46":9,"i47":9,"i48":9,"i49":9,"i50":9,"i51":9,"i52":9,"i53":9,"i54":9,"i55":9,"i56":41,"i57":9,"i58":9,"i59":9,"i60":9,"i61":9,"i62":9,"i63":9,"i64":9,"i65":9,"i66":9,"i67":9,"i68":9,"i69":9,"i70":9,"i71":9,"i72":9,"i73":9,"i74":9,"i75":9,"i76":9,"i77":9,"i78":9,"i79":9,"i80":9,"i81":9,"i82":9,"i83":9,"i84":9,"i85":9,"i86":9,"i87":9,"i88":9,"i89":9,"i90":9,"i91":9,"i92":9,"i93":9,"i94":9,"i95":9,"i96":9,"i97":9,"i98":9,"i99":9,"i100":9,"i101":9,"i102":9};
+var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":41,"i13":9,"i14":9,"i15":9,"i16":9,"i17":9,"i18":9,"i19":9,"i20":9,"i21":9,"i22":9,"i23":9,"i24":9,"i25":9,"i26":9,"i27":9,"i28":9,"i29":9,"i30":9,"i31":9,"i32":9,"i33":9,"i34":9,"i35":9,"i36":9,"i37":9,"i38":41,"i39":9,"i40":9,"i41":9,"i42":9,"i43":9,"i44":9,"i45":9,"i46":9,"i47":9,"i48":9,"i49":9,"i50":9,"i51":9,"i52":9,"i53":9,"i54":9,"i55":9,"i56":41,"i57":9,"i58":9,"i59":9,"i60":9,"i61":9,"i62":9,"i63":9,"i64":9,"i65":9,"i66":9,"i67":9,"i68":9,"i69":9,"i70":9,"i71":9,"i72":9,"i73":9,"i74":9,"i75":9,"i76":9,"i77":9,"i78":9,"i79":9,"i80":9,"i81":9,"i82":9,"i83":9,"i84":9,"i85":9,"i86":9,"i87":9,"i88":9,"i89":9,"i90":9,"i91":9,"i92":9,"i93":9,"i94":9,"i95":9,"i96":9,"i97":9,"i98":9,"i99":9,"i100":9,"i101":9,"i102":9,"i103":9,"i104":9};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.139">MetaTableAccessor</a>
+public class <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.141">MetaTableAccessor</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block"><p>
  Read/write operations on region and assignment information store in <code>hbase:meta</code>.
@@ -720,19 +720,24 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
                                        <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>&nbsp;</td>
 </tr>
 <tr id="i64" class="altColor">
+<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableEncodedRegionNamesForSerialReplication-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">getTableEncodedRegionNamesForSerialReplication</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
+                                              <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>&nbsp;</td>
+</tr>
+<tr id="i65" class="rowColor">
 <td class="colFirst"><code>private static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableFamily--">getTableFamily</a></span>()</code>
 <div class="block">Returns the column family used for table columns.</div>
 </td>
 </tr>
-<tr id="i65" class="rowColor">
+<tr id="i66" class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableRegions-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">getTableRegions</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Gets all of the regions of the specified table.</div>
 </td>
 </tr>
-<tr id="i66" class="altColor">
+<tr id="i67" class="rowColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableRegions-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-boolean-">getTableRegions</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -740,14 +745,14 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="block">Gets all of the regions of the specified table.</div>
 </td>
 </tr>
-<tr id="i67" class="rowColor">
+<tr id="i68" class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableRegionsAndLocations-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">getTableRegionsAndLocations</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                            <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Do not use this method to get meta table regions, use methods in MetaTableLocator instead.</div>
 </td>
 </tr>
-<tr id="i68" class="altColor">
+<tr id="i69" class="rowColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableRegionsAndLocations-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-boolean-">getTableRegionsAndLocations</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                            <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -755,42 +760,42 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="block">Do not use this method to get meta table regions, use methods in MetaTableLocator instead.</div>
 </td>
 </tr>
-<tr id="i69" class="rowColor">
+<tr id="i70" class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableStartRowForMeta-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-">getTableStartRowForMeta</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/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;type)</code>&nbsp;</td>
 </tr>
-<tr id="i70" class="altColor">
+<tr id="i71" class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../org/apache/hadoop/hbase/client/TableState.html" title="class in org.apache.hadoop.hbase.client">TableState</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableState-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">getTableState</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
              <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Fetch table state for given table from META table</div>
 </td>
 </tr>
-<tr id="i71" class="rowColor">
+<tr id="i72" class="altColor">
 <td class="colFirst"><code>static <a href="../../../../org/apache/hadoop/hbase/client/TableState.html" title="class in org.apache.hadoop.hbase.client">TableState</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableState-org.apache.hadoop.hbase.client.Result-">getTableState</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;r)</code>
 <div class="block">Decode table state from META Result.</div>
 </td>
 </tr>
-<tr id="i72" class="altColor">
+<tr id="i73" class="rowColor">
 <td class="colFirst"><code>private static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableStateColumn--">getTableStateColumn</a></span>()</code>
 <div class="block">Returns the column qualifier for serialized table state</div>
 </td>
 </tr>
-<tr id="i73" class="rowColor">
+<tr id="i74" class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="../../../../org/apache/hadoop/hbase/client/TableState.html" title="class in org.apache.hadoop.hbase.client">TableState</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableStates-org.apache.hadoop.hbase.client.Connection-">getTableStates</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn)</code>
 <div class="block">Fetch table states from META table</div>
 </td>
 </tr>
-<tr id="i74" class="altColor">
+<tr id="i75" class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableStopRowForMeta-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-">getTableStopRowForMeta</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/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;type)</code>&nbsp;</td>
 </tr>
-<tr id="i75" class="rowColor">
+<tr id="i76" class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#makeDeleteFromRegionInfo-org.apache.hadoop.hbase.client.RegionInfo-long-">makeDeleteFromRegionInfo</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
                         long&nbsp;ts)</code>
@@ -798,27 +803,27 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  table</div>
 </td>
 </tr>
-<tr id="i76" class="altColor">
+<tr id="i77" class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#makePutForReplicationBarrier-org.apache.hadoop.hbase.client.RegionInfo-long-long-">makePutForReplicationBarrier</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
                             long&nbsp;openSeqNum,
                             long&nbsp;ts)</code>&nbsp;</td>
 </tr>
-<tr id="i77" class="rowColor">
+<tr id="i78" class="altColor">
 <td class="colFirst"><code>static <a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#makePutFromRegionInfo-org.apache.hadoop.hbase.client.RegionInfo-long-">makePutFromRegionInfo</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
                      long&nbsp;ts)</code>
 <div class="block">Generates and returns a Put containing the region into for the catalog table</div>
 </td>
 </tr>
-<tr id="i78" class="altColor">
+<tr id="i79" class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#makePutFromTableState-org.apache.hadoop.hbase.client.TableState-long-">makePutFromTableState</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/TableState.html" title="class in org.apache.hadoop.hbase.client">TableState</a>&nbsp;state,
                      long&nbsp;ts)</code>
 <div class="block">Construct PUT for given state</div>
 </td>
 </tr>
-<tr id="i79" class="rowColor">
+<tr id="i80" class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#mergeRegions-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-long-org.apache.hadoop.hbase.client.RegionInfo-long-org.apache.hadoop.hbase.ServerName-int-">mergeRegions</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
             <a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;mergedRegion,
@@ -831,7 +836,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="block">Merge the two regions into one in an atomic operation.</div>
 </td>
 </tr>
-<tr id="i80" class="altColor">
+<tr id="i81" class="rowColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#multiMutate-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.client.Table-byte:A-java.util.List-">multiMutate</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
            <a href="../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;table,
@@ -840,21 +845,21 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="block">Performs an atomic multi-mutate operation against the given table.</div>
 </td>
 </tr>
-<tr id="i81" class="rowColor">
+<tr id="i82" class="altColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#multiMutate-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.client.Table-byte:A-org.apache.hadoop.hbase.client.Mutation...-">multiMutate</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
            <a href="../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;table,
            byte[]&nbsp;row,
            <a href="../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>...&nbsp;mutations)</code>&nbsp;</td>
 </tr>
-<tr id="i82" class="altColor">
+<tr id="i83" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#mutateMetaTable-org.apache.hadoop.hbase.client.Connection-java.util.List-">mutateMetaTable</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;mutations)</code>
 <div class="block">Execute the passed <code>mutations</code> against <code>hbase:meta</code> table.</div>
 </td>
 </tr>
-<tr id="i83" class="rowColor">
+<tr id="i84" class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#overwriteRegions-org.apache.hadoop.hbase.client.Connection-java.util.List-int-">overwriteRegions</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                 <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;regionInfos,
@@ -862,42 +867,42 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="block">Overwrites the specified regions from hbase:meta.</div>
 </td>
 </tr>
-<tr id="i84" class="altColor">
+<tr id="i85" class="rowColor">
 <td class="colFirst"><code>private static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#parseParentsBytes-byte:A-">parseParentsBytes</a></span>(byte[]&nbsp;bytes)</code>&nbsp;</td>
 </tr>
-<tr id="i85" class="rowColor">
+<tr id="i86" class="altColor">
 <td class="colFirst"><code>static <a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#parseRegionInfoFromRegionName-byte:A-">parseRegionInfoFromRegionName</a></span>(byte[]&nbsp;regionName)</code>
 <div class="block">Returns an HRI parsed from this regionName.</div>
 </td>
 </tr>
-<tr id="i86" class="altColor">
+<tr id="i87" class="rowColor">
 <td class="colFirst"><code>(package private) static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#parseReplicaIdFromServerColumn-byte:A-">parseReplicaIdFromServerColumn</a></span>(byte[]&nbsp;serverColumn)</code>
 <div class="block">Parses the replicaId from the server column qualifier.</div>
 </td>
 </tr>
-<tr id="i87" class="rowColor">
+<tr id="i88" class="altColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#put-org.apache.hadoop.hbase.client.Table-org.apache.hadoop.hbase.client.Put-">put</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;t,
    <a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)</code>&nbsp;</td>
 </tr>
-<tr id="i88" class="altColor">
+<tr id="i89" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#putsToMetaTable-org.apache.hadoop.hbase.client.Connection-java.util.List-">putsToMetaTable</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&gt;&nbsp;ps)</code>
 <div class="block">Put the passed <code>ps</code> to the <code>hbase:meta</code> table.</div>
 </td>
 </tr>
-<tr id="i89" class="rowColor">
+<tr id="i90" class="altColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#putToMetaTable-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.client.Put-">putToMetaTable</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
               <a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)</code>
 <div class="block">Put the passed <code>p</code> to the <code>hbase:meta</code> table.</div>
 </td>
 </tr>
-<tr id="i90" class="altColor">
+<tr id="i91" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#removeRegionReplicasFromMeta-java.util.Set-int-int-org.apache.hadoop.hbase.client.Connection-">removeRegionReplicasFromMeta</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;byte[]&gt;&nbsp;metaRows,
                             int&nbsp;replicaIndexToDeleteFrom,
@@ -906,7 +911,17 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="block">Deletes some replica columns corresponding to replicas for the passed rows</div>
 </td>
 </tr>
-<tr id="i91" class="rowColor">
+<tr id="i92" class="altColor">
+<td class="colFirst"><code>private static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMeta-org.apache.hadoop.hbase.client.Connection-byte:A-byte:A-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-org.apache.hadoop.hbase.filter.Filter-int-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-">scanMeta</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+        byte[]&nbsp;startRow,
+        byte[]&nbsp;stopRow,
+        <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;type,
+        <a href="../../../../org/apache/hadoop/hbase/filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a>&nbsp;filter,
+        int&nbsp;maxRows,
+        <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor)</code>&nbsp;</td>
+</tr>
+<tr id="i93" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMeta-org.apache.hadoop.hbase.client.Connection-byte:A-byte:A-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-int-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-">scanMeta</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
         byte[]&nbsp;startRow,
@@ -917,7 +932,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="block">Performs a scan of META table.</div>
 </td>
 </tr>
-<tr id="i92" class="altColor">
+<tr id="i94" class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMeta-org.apache.hadoop.hbase.client.Connection-byte:A-byte:A-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-">scanMeta</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
         byte[]&nbsp;startRow,
@@ -925,7 +940,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
         <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;type,
         <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor)</code>&nbsp;</td>
 </tr>
-<tr id="i93" class="rowColor">
+<tr id="i95" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMeta-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-org.apache.hadoop.hbase.TableName-byte:A-int-">scanMeta</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
         <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor,
@@ -936,7 +951,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  given row.</div>
 </td>
 </tr>
-<tr id="i94" class="altColor">
+<tr id="i96" class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMeta-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-int-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-">scanMeta</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
         <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
@@ -944,13 +959,13 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
         int&nbsp;maxRows,
         <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor)</code>&nbsp;</td>
 </tr>
-<tr id="i95" class="rowColor">
+<tr id="i97" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMetaForTableRegions-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-org.apache.hadoop.hbase.TableName-">scanMetaForTableRegions</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                        <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor,
                        <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>&nbsp;</td>
 </tr>
-<tr id="i96" class="altColor">
+<tr id="i98" class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#splitRegion-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.client.RegionInfo-long-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-int-">splitRegion</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
            <a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;parent,
@@ -962,14 +977,14 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="block">Splits the region into two in an atomic operation.</div>
 </td>
 </tr>
-<tr id="i97" class="rowColor">
+<tr id="i99" class="rowColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#tableExists-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">tableExists</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
            <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Checks if the specified table exists.</div>
 </td>
 </tr>
-<tr id="i98" class="altColor">
+<tr id="i100" class="altColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#updateLocation-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-long-long-">updateLocation</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
               <a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
@@ -979,7 +994,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="block">Updates the location of the specified region to be the specified server.</div>
 </td>
 </tr>
-<tr id="i99" class="rowColor">
+<tr id="i101" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#updateRegionLocation-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-long-long-">updateRegionLocation</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                     <a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
@@ -990,7 +1005,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  and startcode.</div>
 </td>
 </tr>
-<tr id="i100" class="altColor">
+<tr id="i102" class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#updateTableState-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableState.State-">updateTableState</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
                 <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -998,14 +1013,14 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="block">Updates state in META</div>
 </td>
 </tr>
-<tr id="i101" class="rowColor">
+<tr id="i103" class="rowColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#updateTableState-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.client.TableState-">updateTableState</a></span>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                 <a href="../../../../org/apache/hadoop/hbase/client/TableState.html" title="class in org.apache.hadoop.hbase.client">TableState</a>&nbsp;state)</code>
 <div class="block">Update state of the table in meta.</div>
 </td>
 </tr>
-<tr id="i102" class="altColor">
+<tr id="i104" class="altColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#writeRegionName-java.io.ByteArrayOutputStream-byte:A-">writeRegionName</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/ByteArrayOutputStream.html?is-external=true" title="class or interface in java.io">ByteArrayOutputStream</a>&nbsp;out,
                byte[]&nbsp;regionName)</code>&nbsp;</td>
@@ -1038,7 +1053,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <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/MetaTableAccessor.html#line.141">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.143">LOG</a></pre>
 </li>
 </ul>
 <a name="METALOG">
@@ -1047,7 +1062,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>METALOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.142">METALOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.144">METALOG</a></pre>
 </li>
 </ul>
 <a name="META_REGION_PREFIX">
@@ -1056,7 +1071,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>META_REGION_PREFIX</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.144">META_REGION_PREFIX</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.146">META_REGION_PREFIX</a></pre>
 </li>
 </ul>
 <a name="REPLICATION_PARENT_QUALIFIER">
@@ -1065,7 +1080,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>REPLICATION_PARENT_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.155">REPLICATION_PARENT_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.157">REPLICATION_PARENT_QUALIFIER</a></pre>
 </li>
 </ul>
 <a name="ESCAPE_BYTE">
@@ -1074,7 +1089,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ESCAPE_BYTE</h4>
-<pre>private static final&nbsp;byte <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.157">ESCAPE_BYTE</a></pre>
+<pre>private static final&nbsp;byte <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.159">ESCAPE_BYTE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.MetaTableAccessor.ESCAPE_BYTE">Constant Field Values</a></dd>
@@ -1087,7 +1102,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SEPARATED_BYTE</h4>
-<pre>private static final&nbsp;byte <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.159">SEPARATED_BYTE</a></pre>
+<pre>private static final&nbsp;byte <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.161">SEPARATED_BYTE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.MetaTableAccessor.SEPARATED_BYTE">Constant Field Values</a></dd>
@@ -1100,7 +1115,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>META_REPLICA_ID_DELIMITER</h4>
-<pre>protected static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.210">META_REPLICA_ID_DELIMITER</a></pre>
+<pre>protected static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.212">META_REPLICA_ID_DELIMITER</a></pre>
 <div class="block">The delimiter for meta columns for replicaIds &gt; 0</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -1114,7 +1129,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SERVER_COLUMN_PATTERN</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.213">SERVER_COLUMN_PATTERN</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a> <a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.215">SERVER_COLUMN_PATTERN</a></pre>
 <div class="block">A regex for parsing server columns from meta. See above javadoc for meta layout</div>
 </li>
 </ul>
@@ -1132,7 +1147,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MetaTableAccessor</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.139">MetaTableAccessor</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.141">MetaTableAccessor</a>()</pre>
 </li>
 </ul>
 </li>
@@ -1150,7 +1165,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <li class="blockList">
 <h4>allTableRegions</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.170">allTableRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.172">allTableRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                                                               <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
                                                                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">use <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableRegionsAndLocations-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-"><code>getTableRegionsAndLocations(org.apache.hadoop.hbase.client.Connection, org.apache.hadoop.hbase.TableName)</code></a>, region can have multiple locations</span></div>
@@ -1173,7 +1188,7 @@ public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/
 <ul class="blockList">
 <li class="blockList">
 <h4>fullScanRegions</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.225">fullScanRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.227">fullScanRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                    <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor)
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Performs a full scan of <code>hbase:meta</code> for regions.</div>
@@ -1192,7 +1207,7 @@ public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/
 <ul class="blockList">
 <li class="blockList">
 <h4>fullScanRegions</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.235">fullScanRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection)
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.237">fullScanRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection)
                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Performs a full scan of <code>hbase:meta</code> for regions.</div>
 <dl>
@@ -1209,7 +1224,7 @@ public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/
 <ul class="blockList">
 <li class="blockList">
 <h4>fullScanTables</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.245">fullScanTables</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.247">fullScanTables</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                   <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Performs a full scan of <code>hbase:meta</code> for tables.</div>
@@ -1228,7 +1243,7 @@ public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/
 <ul class="blockList">
 <li class="blockList">
 <h4>fullScan</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.257">fullScan</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.259">fullScan</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                     <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;type)
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Performs a full scan of <code>hbase:meta</code>.</div>
@@ -1249,7 +1264,7 @@ public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaHTable</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.269">getMetaHTable</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection)
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.271">getMetaHTable</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Callers should call close on the returned <a href="../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client"><code>Table</code></a> instance.</div>
 <dl>
@@ -1268,7 +1283,7 @@ public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>private static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.284">get</a>(<a href="../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;t,
+<pre>private static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.286">get</a>(<a href="../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;t,
                           <a href="../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;g)
                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -1287,7 +1302,7 @@ public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/
 <li class="blockList">
 <h4>getRegion</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.301">getRegion</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.303">getRegion</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                                                 byte[]&nbsp;regionName)
                                                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">use <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getRegionLocation-org.apache.hadoop.hbase.client.Connection-byte:A-"><code>getRegionLocation(Connection, byte[])</code></a> instead</span></div>
@@ -1309,7 +1324,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionLocation</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.315">getRegionLocation</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.317">getRegionLocation</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                                 byte[]&nbsp;regionName)
                                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Returns the HRegionLocation from meta for the given region</div>
@@ -1330,7 +1345,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionLocation</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.339">getRegionLocation</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.341">getRegionLocation</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                                 <a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)
                                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Returns the HRegionLocation from meta for the given region</div>
@@ -1351,7 +1366,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaKeyForRegion</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.349">getMetaKeyForRegion</a>(<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</pre>
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.351">getMetaKeyForRegion</a>(<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</pre>
 <div class="block">Returns the row key to use for this regionInfo</div>
 </li>
 </ul>
@@ -1361,7 +1376,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>parseRegionInfoFromRegionName</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.357">parseRegionInfoFromRegionName</a>(byte[]&nbsp;regionName)
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.359">parseRegionInfoFromRegionName</a>(byte[]&nbsp;regionName)
                                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Returns an HRI parsed from this regionName. Not all the fields of the HRI
  is stored in the name, so the returned object should only be used for the fields
@@ -1378,7 +1393,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionResult</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.376">getRegionResult</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.378">getRegionResult</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                      byte[]&nbsp;regionName)
                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Gets the result in hbase:meta for the specified region.</div>
@@ -1400,7 +1415,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html"
 <li class="blockList">
 <h4>getRegionsFromMergeQualifier</h4>
 <pre>@Nullable
-public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.388">getRegionsFromMergeQualifier</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.390">getRegionsFromMergeQualifier</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                                                                  byte[]&nbsp;regionName)
                                                                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get regions from the merge qualifier of the specified merged region</div>
@@ -1418,7 +1433,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>tableExists</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.406">tableExists</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.408">tableExists</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                   <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Checks if the specified table exists.  Looks at the hbase:meta table hosted on
@@ -1440,7 +1455,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllRegions</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.423">getAllRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.425">getAllRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                              boolean&nbsp;excludeOfflinedSplitParents)
                                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Lists all of the regions currently in META.</div>
@@ -1462,7 +1477,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableRegions</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.442">getTableRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.444">getTableRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                                <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
                                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Gets all of the regions of the specified table. Do not use this method
@@ -1484,7 +1499,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableRegions</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.456">getTableRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.458">getTableRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                                <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                                boolean&nbsp;excludeOfflinedSplitParents)
                                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1509,7 +1524,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>getListOfRegionInfos</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.463">getListOfRegionInfos</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;&nbsp;pairs)</pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.465">getListOfRegionInfos</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;&nbsp;pairs)</pre>
 </li>
 </ul>
 <a name="getTableStartRowForMeta-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-">
@@ -1518,7 +1533,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableStartRowForMeta</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.479">getTableStartRowForMeta</a>(<a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.481">getTableStartRowForMeta</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/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;type)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1534,7 +1549,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableStopRowForMeta</h4>
-<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.501">getTableStopRowForMeta</a>(<a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.503">getTableStopRowForMeta</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/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;type)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1551,7 +1566,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html"
 <li class="blockList">
 <h4>getScanForTableName</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.535">getScanForTableName</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.537">getScanForTableName</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                                    <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <div class="block">This method creates a Scan object that will only scan catalog rows that
@@ -1573,7 +1588,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/Scan.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaScan</h4>
-<pre>private static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.547">getMetaScan</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+<pre>private static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.549">getMetaScan</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                 int&nbsp;rowUpperLimit)</pre>
 </li>
 </ul>
@@ -1583,7 +1598,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/Scan.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableRegionsAndLocations</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.571">getTableRegionsAndLocations</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.573">getTableRegionsAndLocations</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                                                             <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
                                                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Do not use this method to get meta table regions, use methods in MetaTableLocator instead.</div>
@@ -1604,7 +1619,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/Scan.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableRegionsAndLocations</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.584">getTableRegionsAndLocations</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.586">getTableRegionsAndLocations</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                                                             @Nullable
                                                                             <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                                                             boolean&nbsp;excludeOfflinedSplitParents)
@@ -1628,7 +1643,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/Scan.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerUserRegions</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.636">getServerUserRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;<a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.638">getServerUserRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                                                    <a href="../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
                                                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -1649,7 +1664,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/Scan.html
 <ul class="blockList">
 <li class="blockList">
 <h4>fullScanMetaAndPrint</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.660">fullScanMetaAndPrint</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.662">fullScanMetaAndPrint</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection)
                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1663,7 +1678,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/Scan.html
 <ul class="blockList">
 <li class="blockList">
 <h4>scanMetaForTableRegions</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.685">scanMetaForTableRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.687">scanMetaForTableRegions</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                                            <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor,
                                            <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1679,7 +1694,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/Scan.html
 <ul class="blockList">
 <li class="blockList">
 <h4>scanMeta</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.690">scanMeta</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.692">scanMeta</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                             <a href="../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                             <a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;type,
                             int&nbsp;maxRows,
@@ -1697,7 +1712,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/client/Scan.html
 <ul class="blockList">
 <li class="blockList">
 <h4>scanMeta</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/MetaTableAccessor.html#line.696">scanMeta</a>(<a href="../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+<pre>public stat

<TRUNCATED>

[09/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html
index 6007f27..4ce6735 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.ReplicationBarrierResult.html
@@ -65,716 +65,716 @@
 <span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Table;<a name="line.57"></a>
 <span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.58"></a>
 <span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsResponse;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.slf4j.Logger;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.slf4j.LoggerFactory;<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.79"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsResponse;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.slf4j.Logger;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.slf4j.LoggerFactory;<a name="line.79"></a>
 <span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>/**<a name="line.81"></a>
-<span class="sourceLineNo">082</span> * &lt;p&gt;<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * Read/write operations on region and assignment information store in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * &lt;/p&gt;<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * &lt;p&gt;<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * Some of the methods of this class take ZooKeeperWatcher as a param. The only reason for this is<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * because when used on client-side (like from HBaseAdmin), we want to use short-living connection<a name="line.87"></a>
-<span class="sourceLineNo">088</span> * (opened before each operation, closed right after), while when used on HM or HRS (like in<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * AssignmentManager) we want permanent connection.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * &lt;/p&gt;<a name="line.90"></a>
-<span class="sourceLineNo">091</span> * &lt;p&gt;<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * HBASE-10070 adds a replicaId to HRI, meaning more than one HRI can be defined for the same table<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * range (table, startKey, endKey). For every range, there will be at least one HRI defined which is<a name="line.93"></a>
-<span class="sourceLineNo">094</span> * called default replica.<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * &lt;/p&gt;<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * &lt;p&gt;<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * Meta layout (as of 0.98 + HBASE-10070) is like:<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * &lt;pre&gt;<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * For each table there is single row in column family 'table' formatted:<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * &amp;lt;tableName&amp;gt; including namespace and columns are:<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * table: state             =&gt; contains table state<a name="line.102"></a>
-<span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * For each table range, there is a single row, formatted like:<a name="line.104"></a>
-<span class="sourceLineNo">105</span> * &amp;lt;tableName&amp;gt;,&amp;lt;startKey&amp;gt;,&amp;lt;regionId&amp;gt;,&amp;lt;encodedRegionName&amp;gt;.<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * This row corresponds to the regionName of the default region replica.<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Columns are:<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * info:regioninfo         =&gt; contains serialized HRI for the default region replica<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * info:server             =&gt; contains hostname:port (in string form) for the server hosting<a name="line.109"></a>
-<span class="sourceLineNo">110</span> *                            the default regionInfo replica<a name="line.110"></a>
-<span class="sourceLineNo">111</span> * info:server_&amp;lt;replicaId&amp;gt =&gt; contains hostname:port (in string form) for the server hosting<a name="line.111"></a>
-<span class="sourceLineNo">112</span> *                                 the regionInfo replica with replicaId<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * info:serverstartcode    =&gt; contains server start code (in binary long form) for the server<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *                            hosting the default regionInfo replica<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * info:serverstartcode_&amp;lt;replicaId&amp;gt =&gt; contains server start code (in binary long form) for<a name="line.115"></a>
-<span class="sourceLineNo">116</span> *                                          the server hosting the regionInfo replica with<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *                                          replicaId<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * info:seqnumDuringOpen   =&gt; contains seqNum (in binary long form) for the region at the time<a name="line.118"></a>
-<span class="sourceLineNo">119</span> *                             the server opened the region with default replicaId<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * info:seqnumDuringOpen_&amp;lt;replicaId&amp;gt =&gt; contains seqNum (in binary long form) for the region<a name="line.120"></a>
-<span class="sourceLineNo">121</span> *                                           at the time the server opened the region with<a name="line.121"></a>
-<span class="sourceLineNo">122</span> *                                           replicaId<a name="line.122"></a>
-<span class="sourceLineNo">123</span> * info:splitA             =&gt; contains a serialized HRI for the first daughter region if the<a name="line.123"></a>
-<span class="sourceLineNo">124</span> *                             region is split<a name="line.124"></a>
-<span class="sourceLineNo">125</span> * info:splitB             =&gt; contains a serialized HRI for the second daughter region if the<a name="line.125"></a>
+<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>/**<a name="line.83"></a>
+<span class="sourceLineNo">084</span> * &lt;p&gt;<a name="line.84"></a>
+<span class="sourceLineNo">085</span> * Read/write operations on region and assignment information store in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * &lt;/p&gt;<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * &lt;p&gt;<a name="line.87"></a>
+<span class="sourceLineNo">088</span> * Some of the methods of this class take ZooKeeperWatcher as a param. The only reason for this is<a name="line.88"></a>
+<span class="sourceLineNo">089</span> * because when used on client-side (like from HBaseAdmin), we want to use short-living connection<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * (opened before each operation, closed right after), while when used on HM or HRS (like in<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * AssignmentManager) we want permanent connection.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * &lt;/p&gt;<a name="line.92"></a>
+<span class="sourceLineNo">093</span> * &lt;p&gt;<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * HBASE-10070 adds a replicaId to HRI, meaning more than one HRI can be defined for the same table<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * range (table, startKey, endKey). For every range, there will be at least one HRI defined which is<a name="line.95"></a>
+<span class="sourceLineNo">096</span> * called default replica.<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * &lt;/p&gt;<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * &lt;p&gt;<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * Meta layout (as of 0.98 + HBASE-10070) is like:<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * &lt;pre&gt;<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * For each table there is single row in column family 'table' formatted:<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * &amp;lt;tableName&amp;gt; including namespace and columns are:<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * table: state             =&gt; contains table state<a name="line.104"></a>
+<span class="sourceLineNo">105</span> *<a name="line.105"></a>
+<span class="sourceLineNo">106</span> * For each table range, there is a single row, formatted like:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * &amp;lt;tableName&amp;gt;,&amp;lt;startKey&amp;gt;,&amp;lt;regionId&amp;gt;,&amp;lt;encodedRegionName&amp;gt;.<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * This row corresponds to the regionName of the default region replica.<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * Columns are:<a name="line.109"></a>
+<span class="sourceLineNo">110</span> * info:regioninfo         =&gt; contains serialized HRI for the default region replica<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * info:server             =&gt; contains hostname:port (in string form) for the server hosting<a name="line.111"></a>
+<span class="sourceLineNo">112</span> *                            the default regionInfo replica<a name="line.112"></a>
+<span class="sourceLineNo">113</span> * info:server_&amp;lt;replicaId&amp;gt =&gt; contains hostname:port (in string form) for the server hosting<a name="line.113"></a>
+<span class="sourceLineNo">114</span> *                                 the regionInfo replica with replicaId<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * info:serverstartcode    =&gt; contains server start code (in binary long form) for the server<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *                            hosting the default regionInfo replica<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * info:serverstartcode_&amp;lt;replicaId&amp;gt =&gt; contains server start code (in binary long form) for<a name="line.117"></a>
+<span class="sourceLineNo">118</span> *                                          the server hosting the regionInfo replica with<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *                                          replicaId<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * info:seqnumDuringOpen   =&gt; contains seqNum (in binary long form) for the region at the time<a name="line.120"></a>
+<span class="sourceLineNo">121</span> *                             the server opened the region with default replicaId<a name="line.121"></a>
+<span class="sourceLineNo">122</span> * info:seqnumDuringOpen_&amp;lt;replicaId&amp;gt =&gt; contains seqNum (in binary long form) for the region<a name="line.122"></a>
+<span class="sourceLineNo">123</span> *                                           at the time the server opened the region with<a name="line.123"></a>
+<span class="sourceLineNo">124</span> *                                           replicaId<a name="line.124"></a>
+<span class="sourceLineNo">125</span> * info:splitA             =&gt; contains a serialized HRI for the first daughter region if the<a name="line.125"></a>
 <span class="sourceLineNo">126</span> *                             region is split<a name="line.126"></a>
-<span class="sourceLineNo">127</span> * info:mergeA             =&gt; contains a serialized HRI for the first parent region if the<a name="line.127"></a>
-<span class="sourceLineNo">128</span> *                             region is the result of a merge<a name="line.128"></a>
-<span class="sourceLineNo">129</span> * info:mergeB             =&gt; contains a serialized HRI for the second parent region if the<a name="line.129"></a>
+<span class="sourceLineNo">127</span> * info:splitB             =&gt; contains a serialized HRI for the second daughter region if the<a name="line.127"></a>
+<span class="sourceLineNo">128</span> *                             region is split<a name="line.128"></a>
+<span class="sourceLineNo">129</span> * info:mergeA             =&gt; contains a serialized HRI for the first parent region if the<a name="line.129"></a>
 <span class="sourceLineNo">130</span> *                             region is the result of a merge<a name="line.130"></a>
-<span class="sourceLineNo">131</span> * &lt;/pre&gt;<a name="line.131"></a>
-<span class="sourceLineNo">132</span> * &lt;/p&gt;<a name="line.132"></a>
-<span class="sourceLineNo">133</span> * &lt;p&gt;<a name="line.133"></a>
-<span class="sourceLineNo">134</span> * The actual layout of meta should be encapsulated inside MetaTableAccessor methods, and should not<a name="line.134"></a>
-<span class="sourceLineNo">135</span> * leak out of it (through Result objects, etc)<a name="line.135"></a>
-<span class="sourceLineNo">136</span> * &lt;/p&gt;<a name="line.136"></a>
-<span class="sourceLineNo">137</span> */<a name="line.137"></a>
-<span class="sourceLineNo">138</span>@InterfaceAudience.Private<a name="line.138"></a>
-<span class="sourceLineNo">139</span>public class MetaTableAccessor {<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static final Logger LOG = LoggerFactory.getLogger(MetaTableAccessor.class);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static final Logger METALOG = LoggerFactory.getLogger("org.apache.hadoop.hbase.META");<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static final byte[] META_REGION_PREFIX;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  static {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    // Copy the prefix from FIRST_META_REGIONINFO into META_REGION_PREFIX.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    // FIRST_META_REGIONINFO == 'hbase:meta,,1'.  META_REGION_PREFIX == 'hbase:meta,'<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    int len = RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName().length - 2;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    META_REGION_PREFIX = new byte [len];<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    System.arraycopy(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName(), 0,<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      META_REGION_PREFIX, 0, len);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>  @VisibleForTesting<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  public static final byte[] REPLICATION_PARENT_QUALIFIER = Bytes.toBytes("parent");<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  private static final byte ESCAPE_BYTE = (byte) 0xFF;<a name="line.157"></a>
+<span class="sourceLineNo">131</span> * info:mergeB             =&gt; contains a serialized HRI for the second parent region if the<a name="line.131"></a>
+<span class="sourceLineNo">132</span> *                             region is the result of a merge<a name="line.132"></a>
+<span class="sourceLineNo">133</span> * &lt;/pre&gt;<a name="line.133"></a>
+<span class="sourceLineNo">134</span> * &lt;/p&gt;<a name="line.134"></a>
+<span class="sourceLineNo">135</span> * &lt;p&gt;<a name="line.135"></a>
+<span class="sourceLineNo">136</span> * The actual layout of meta should be encapsulated inside MetaTableAccessor methods, and should not<a name="line.136"></a>
+<span class="sourceLineNo">137</span> * leak out of it (through Result objects, etc)<a name="line.137"></a>
+<span class="sourceLineNo">138</span> * &lt;/p&gt;<a name="line.138"></a>
+<span class="sourceLineNo">139</span> */<a name="line.139"></a>
+<span class="sourceLineNo">140</span>@InterfaceAudience.Private<a name="line.140"></a>
+<span class="sourceLineNo">141</span>public class MetaTableAccessor {<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static final Logger LOG = LoggerFactory.getLogger(MetaTableAccessor.class);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static final Logger METALOG = LoggerFactory.getLogger("org.apache.hadoop.hbase.META");<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static final byte[] META_REGION_PREFIX;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  static {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    // Copy the prefix from FIRST_META_REGIONINFO into META_REGION_PREFIX.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    // FIRST_META_REGIONINFO == 'hbase:meta,,1'.  META_REGION_PREFIX == 'hbase:meta,'<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    int len = RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName().length - 2;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    META_REGION_PREFIX = new byte [len];<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    System.arraycopy(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName(), 0,<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      META_REGION_PREFIX, 0, len);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  }<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span>  @VisibleForTesting<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  public static final byte[] REPLICATION_PARENT_QUALIFIER = Bytes.toBytes("parent");<a name="line.157"></a>
 <span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  private static final byte SEPARATED_BYTE = 0x00;<a name="line.159"></a>
+<span class="sourceLineNo">159</span>  private static final byte ESCAPE_BYTE = (byte) 0xFF;<a name="line.159"></a>
 <span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  /**<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * Lists all of the table regions currently in META.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * Deprecated, keep there until some test use this.<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * @param connection what we will use<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * @param tableName table to list<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @return Map of all user-space regions to servers<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * @deprecated use {@link #getTableRegionsAndLocations}, region can have multiple locations<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   */<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  @Deprecated<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  public static NavigableMap&lt;RegionInfo, ServerName&gt; allTableRegions(<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      Connection connection, final TableName tableName) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    final NavigableMap&lt;RegionInfo, ServerName&gt; regions = new TreeMap&lt;&gt;();<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    Visitor visitor = new TableVisitorBase(tableName) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      public boolean visitInternal(Result result) throws IOException {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        RegionLocations locations = getRegionLocations(result);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>        if (locations == null) return true;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        for (HRegionLocation loc : locations.getRegionLocations()) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          if (loc != null) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>            RegionInfo regionInfo = loc.getRegionInfo();<a name="line.180"></a>
-<span class="sourceLineNo">181</span>            regions.put(regionInfo, loc.getServerName());<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>        return true;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    };<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    scanMetaForTableRegions(connection, visitor, tableName);<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    return regions;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>  @InterfaceAudience.Private<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  public enum QueryType {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    ALL(HConstants.TABLE_FAMILY, HConstants.CATALOG_FAMILY),<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    REGION(HConstants.CATALOG_FAMILY),<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    TABLE(HConstants.TABLE_FAMILY),<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    REPLICATION(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>    private final byte[][] families;<a name="line.198"></a>
+<span class="sourceLineNo">161</span>  private static final byte SEPARATED_BYTE = 0x00;<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  /**<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   * Lists all of the table regions currently in META.<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * Deprecated, keep there until some test use this.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * @param connection what we will use<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * @param tableName table to list<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * @return Map of all user-space regions to servers<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * @deprecated use {@link #getTableRegionsAndLocations}, region can have multiple locations<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  @Deprecated<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public static NavigableMap&lt;RegionInfo, ServerName&gt; allTableRegions(<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      Connection connection, final TableName tableName) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    final NavigableMap&lt;RegionInfo, ServerName&gt; regions = new TreeMap&lt;&gt;();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    Visitor visitor = new TableVisitorBase(tableName) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      @Override<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      public boolean visitInternal(Result result) throws IOException {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        RegionLocations locations = getRegionLocations(result);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        if (locations == null) return true;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        for (HRegionLocation loc : locations.getRegionLocations()) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          if (loc != null) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            RegionInfo regionInfo = loc.getRegionInfo();<a name="line.182"></a>
+<span class="sourceLineNo">183</span>            regions.put(regionInfo, loc.getServerName());<a name="line.183"></a>
+<span class="sourceLineNo">184</span>          }<a name="line.184"></a>
+<span class="sourceLineNo">185</span>        }<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        return true;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    };<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    scanMetaForTableRegions(connection, visitor, tableName);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    return regions;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  @InterfaceAudience.Private<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  public enum QueryType {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    ALL(HConstants.TABLE_FAMILY, HConstants.CATALOG_FAMILY),<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    REGION(HConstants.CATALOG_FAMILY),<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    TABLE(HConstants.TABLE_FAMILY),<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    REPLICATION(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.198"></a>
 <span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>    QueryType(byte[]... families) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      this.families = families;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span>    byte[][] getFamilies() {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return this.families;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private static final Pattern SERVER_COLUMN_PATTERN<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    = Pattern.compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  ////////////////////////<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  // Reading operations //<a name="line.217"></a>
+<span class="sourceLineNo">200</span>    private final byte[][] families;<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    QueryType(byte[]... families) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      this.families = families;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>    byte[][] getFamilies() {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      return this.families;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    }<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  private static final Pattern SERVER_COLUMN_PATTERN<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    = Pattern.compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
 <span class="sourceLineNo">218</span>  ////////////////////////<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>  /**<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   * @param connection connection we're using<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * @param visitor Visitor invoked against each row in regions family.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  public static void fullScanRegions(Connection connection,<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      final Visitor visitor)<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      throws IOException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    scanMeta(connection, null, null, QueryType.REGION, visitor);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  /**<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   * @param connection connection we're using<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public static List&lt;Result&gt; fullScanRegions(Connection connection)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      throws IOException {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    return fullScan(connection, QueryType.REGION);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  /**<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for tables.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   * @param connection connection we're using<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * @param visitor Visitor invoked against each row in tables family.<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  public static void fullScanTables(Connection connection,<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      final Visitor visitor)<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      throws IOException {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    scanMeta(connection, null, null, QueryType.TABLE, visitor);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>  /**<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   * @param connection connection we're using<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   * @param type scanned part of meta<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * @return List of {@link Result}<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  public static List&lt;Result&gt; fullScan(Connection connection, QueryType type)<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    throws IOException {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    CollectAllVisitor v = new CollectAllVisitor();<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    scanMeta(connection, null, null, type, v);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return v.getResults();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>  /**<a name="line.264"></a>
-<span class="sourceLineNo">265</span>   * Callers should call close on the returned {@link Table} instance.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>   * @param connection connection we're using to access Meta<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   * @return An {@link Table} for &lt;code&gt;hbase:meta&lt;/code&gt;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   */<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  public static Table getMetaHTable(final Connection connection)<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  throws IOException {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // We used to pass whole CatalogTracker in here, now we just pass in Connection<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    if (connection == null) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      throw new NullPointerException("No connection");<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    } else if (connection.isClosed()) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      throw new IOException("connection is closed");<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return connection.getTable(TableName.META_TABLE_NAME);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>  /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * @param t Table to use (will be closed when done).<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   * @param g Get to run<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   */<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  private static Result get(final Table t, final Get g) throws IOException {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    if (t == null) return null;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    try {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      return t.get(g);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    } finally {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      t.close();<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    }<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  /**<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * Gets the region info and assignment for the specified region.<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @param connection connection we're using<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * @param regionName Region to lookup.<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   * @return Location and RegionInfo for &lt;code&gt;regionName&lt;/code&gt;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>   * @deprecated use {@link #getRegionLocation(Connection, byte[])} instead<a name="line.298"></a>
-<span class="sourceLineNo">299</span>   */<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  @Deprecated<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  public static Pair&lt;RegionInfo, ServerName&gt; getRegion(Connection connection, byte [] regionName)<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    throws IOException {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    HRegionLocation location = getRegionLocation(connection, regionName);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    return location == null<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      ? null<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      : new Pair&lt;&gt;(location.getRegionInfo(), location.getServerName());<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  /**<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * Returns the HRegionLocation from meta for the given region<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * @param connection connection we're using<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * @param regionName region we're looking for<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * @return HRegionLocation for the given region<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public static HRegionLocation getRegionLocation(Connection connection, byte[] regionName)<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      throws IOException {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    byte[] row = regionName;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    RegionInfo parsedInfo = null;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    try {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      parsedInfo = parseRegionInfoFromRegionName(regionName);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      row = getMetaKeyForRegion(parsedInfo);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    } catch (Exception parseEx) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      // Ignore. This is used with tableName passed as regionName.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    Get get = new Get(row);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    Result r = get(getMetaHTable(connection), get);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    RegionLocations locations = getRegionLocations(r);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    return locations == null ? null<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      : locations.getRegionLocation(parsedInfo == null ? 0 : parsedInfo.getReplicaId());<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  /**<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * Returns the HRegionLocation from meta for the given region<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * @param connection connection we're using<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   * @param regionInfo region information<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * @return HRegionLocation for the given region<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   */<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static HRegionLocation getRegionLocation(Connection connection, RegionInfo regionInfo)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      throws IOException {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    byte[] row = getMetaKeyForRegion(regionInfo);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    Get get = new Get(row);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    Result r = get(getMetaHTable(connection), get);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    return getRegionLocation(r, regionInfo, regionInfo.getReplicaId());<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>  /** Returns the row key to use for this regionInfo */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public static byte[] getMetaKeyForRegion(RegionInfo regionInfo) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    return RegionReplicaUtil.getRegionInfoForDefaultReplica(regionInfo).getRegionName();<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /** Returns an HRI parsed from this regionName. Not all the fields of the HRI<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * is stored in the name, so the returned object should only be used for the fields<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * in the regionName.<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  public static RegionInfo parseRegionInfoFromRegionName(byte[] regionName) throws IOException {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    byte[][] fields = RegionInfo.parseRegionName(regionName);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    long regionId = Long.parseLong(Bytes.toString(fields[2]));<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    int replicaId = fields.length &gt; 3 ? Integer.parseInt(Bytes.toString(fields[3]), 16) : 0;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    return RegionInfoBuilder.newBuilder(TableName.valueOf(fields[0]))<a name="line.361"></a>
-<span class="sourceLineNo">362</span>              .setStartKey(fields[1])<a name="line.362"></a>
-<span class="sourceLineNo">363</span>              .setEndKey(fields[2])<a name="line.363"></a>
-<span class="sourceLineNo">364</span>              .setSplit(false)<a name="line.364"></a>
-<span class="sourceLineNo">365</span>              .setRegionId(regionId)<a name="line.365"></a>
-<span class="sourceLineNo">366</span>              .setReplicaId(replicaId)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>              .build();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * Gets the result in hbase:meta for the specified region.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * @param connection connection we're using<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * @param regionName region we're looking for<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * @return result of the specified region<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   */<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  public static Result getRegionResult(Connection connection,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      byte[] regionName) throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    Get get = new Get(regionName);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    return get(getMetaHTable(connection), get);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span>  /**<a name="line.383"></a>
-<span class="sourceLineNo">384</span>   * Get regions from the merge qualifier of the specified merged region<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * @return null if it doesn't contain merge qualifier, else two merge regions<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   */<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Nullable<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public static Pair&lt;RegionInfo, RegionInfo&gt; getRegionsFromMergeQualifier(<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      Connection connection, byte[] regionName) throws IOException {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    Result result = getRegionResult(connection, regionName);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    RegionInfo mergeA = getRegionInfo(result, HConstants.MERGEA_QUALIFIER);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    RegionInfo mergeB = getRegionInfo(result, HConstants.MERGEB_QUALIFIER);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    if (mergeA == null &amp;&amp; mergeB == null) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      return null;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    return new Pair&lt;&gt;(mergeA, mergeB);<a name="line.396"></a>
-<span class="sourceLineNo">397</span> }<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  /**<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * Checks if the specified table exists.  Looks at the hbase:meta table hosted on<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * the specified server.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param connection connection we're using<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param tableName table to check<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @return true if the table exists in meta, false if not<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  public static boolean tableExists(Connection connection,<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      final TableName tableName)<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  throws IOException {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    // Catalog tables always exist.<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return tableName.equals(TableName.META_TABLE_NAME)<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        || getTableState(connection, tableName) != null;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  /**<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * Lists all of the regions currently in META.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   *<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param connection to connect with<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param excludeOfflinedSplitParents False if we are to include offlined/splitparents regions,<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   *                                    true and we'll leave out offlined regions from returned list<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * @return List of all user-space regions.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   */<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  @VisibleForTesting<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  public static List&lt;RegionInfo&gt; getAllRegions(Connection connection,<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      boolean excludeOfflinedSplitParents)<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      throws IOException {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result;<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>    result = getTableRegionsAndLocations(connection, null,<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        excludeOfflinedSplitParents);<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>    return getListOfRegionInfos(result);<a name="line.431"></a>
+<span class="sourceLineNo">219</span>  // Reading operations //<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  ////////////////////////<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>  /**<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * @param connection connection we're using<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * @param visitor Visitor invoked against each row in regions family.<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   */<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public static void fullScanRegions(Connection connection,<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      final Visitor visitor)<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      throws IOException {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    scanMeta(connection, null, null, QueryType.REGION, visitor);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>  }<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>  /**<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @param connection connection we're using<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  public static List&lt;Result&gt; fullScanRegions(Connection connection)<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      throws IOException {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return fullScan(connection, QueryType.REGION);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  /**<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for tables.<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * @param connection connection we're using<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * @param visitor Visitor invoked against each row in tables family.<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   */<a name="line.246"></a>
+<span class="sourceLineNo">247</span>  public static void fullScanTables(Connection connection,<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      final Visitor visitor)<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    scanMeta(connection, null, null, QueryType.TABLE, visitor);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  }<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>  /**<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * @param connection connection we're using<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   * @param type scanned part of meta<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   * @return List of {@link Result}<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  public static List&lt;Result&gt; fullScan(Connection connection, QueryType type)<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    throws IOException {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    CollectAllVisitor v = new CollectAllVisitor();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    scanMeta(connection, null, null, type, v);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    return v.getResults();<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  }<a name="line.264"></a>
+<span class="sourceLineNo">265</span><a name="line.265"></a>
+<span class="sourceLineNo">266</span>  /**<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   * Callers should call close on the returned {@link Table} instance.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   * @param connection connection we're using to access Meta<a name="line.268"></a>
+<span class="sourceLineNo">269</span>   * @return An {@link Table} for &lt;code&gt;hbase:meta&lt;/code&gt;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>   */<a name="line.270"></a>
+<span class="sourceLineNo">271</span>  public static Table getMetaHTable(final Connection connection)<a name="line.271"></a>
+<span class="sourceLineNo">272</span>  throws IOException {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // We used to pass whole CatalogTracker in here, now we just pass in Connection<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    if (connection == null) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      throw new NullPointerException("No connection");<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    } else if (connection.isClosed()) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      throw new IOException("connection is closed");<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    return connection.getTable(TableName.META_TABLE_NAME);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>  /**<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * @param t Table to use (will be closed when done).<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   * @param g Get to run<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   */<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  private static Result get(final Table t, final Get g) throws IOException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    if (t == null) return null;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    try {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      return t.get(g);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    } finally {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      t.close();<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>  /**<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   * Gets the region info and assignment for the specified region.<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   * @param connection connection we're using<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * @param regionName Region to lookup.<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   * @return Location and RegionInfo for &lt;code&gt;regionName&lt;/code&gt;<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   * @deprecated use {@link #getRegionLocation(Connection, byte[])} instead<a name="line.300"></a>
+<span class="sourceLineNo">301</span>   */<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  @Deprecated<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  public static Pair&lt;RegionInfo, ServerName&gt; getRegion(Connection connection, byte [] regionName)<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    throws IOException {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    HRegionLocation location = getRegionLocation(connection, regionName);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    return location == null<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      ? null<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      : new Pair&lt;&gt;(location.getRegionInfo(), location.getServerName());<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>  /**<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   * Returns the HRegionLocation from meta for the given region<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * @param connection connection we're using<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   * @param regionName region we're looking for<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * @return HRegionLocation for the given region<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   */<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public static HRegionLocation getRegionLocation(Connection connection, byte[] regionName)<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      throws IOException {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    byte[] row = regionName;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    RegionInfo parsedInfo = null;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    try {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      parsedInfo = parseRegionInfoFromRegionName(regionName);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      row = getMetaKeyForRegion(parsedInfo);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    } catch (Exception parseEx) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      // Ignore. This is used with tableName passed as regionName.<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    Get get = new Get(row);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    Result r = get(getMetaHTable(connection), get);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    RegionLocations locations = getRegionLocations(r);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    return locations == null ? null<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      : locations.getRegionLocation(parsedInfo == null ? 0 : parsedInfo.getReplicaId());<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>  /**<a name="line.335"></a>
+<span class="sourceLineNo">336</span>   * Returns the HRegionLocation from meta for the given region<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * @param connection connection we're using<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * @param regionInfo region information<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * @return HRegionLocation for the given region<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   */<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  public static HRegionLocation getRegionLocation(Connection connection, RegionInfo regionInfo)<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      throws IOException {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    byte[] row = getMetaKeyForRegion(regionInfo);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    Get get = new Get(row);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    Result r = get(getMetaHTable(connection), get);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    return getRegionLocation(r, regionInfo, regionInfo.getReplicaId());<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  /** Returns the row key to use for this regionInfo */<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  public static byte[] getMetaKeyForRegion(RegionInfo regionInfo) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    return RegionReplicaUtil.getRegionInfoForDefaultReplica(regionInfo).getRegionName();<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  /** Returns an HRI parsed from this regionName. Not all the fields of the HRI<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * is stored in the name, so the returned object should only be used for the fields<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * in the regionName.<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   */<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  public static RegionInfo parseRegionInfoFromRegionName(byte[] regionName) throws IOException {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    byte[][] fields = RegionInfo.parseRegionName(regionName);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    long regionId = Long.parseLong(Bytes.toString(fields[2]));<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    int replicaId = fields.length &gt; 3 ? Integer.parseInt(Bytes.toString(fields[3]), 16) : 0;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    return RegionInfoBuilder.newBuilder(TableName.valueOf(fields[0]))<a name="line.363"></a>
+<span class="sourceLineNo">364</span>              .setStartKey(fields[1])<a name="line.364"></a>
+<span class="sourceLineNo">365</span>              .setEndKey(fields[2])<a name="line.365"></a>
+<span class="sourceLineNo">366</span>              .setSplit(false)<a name="line.366"></a>
+<span class="sourceLineNo">367</span>              .setRegionId(regionId)<a name="line.367"></a>
+<span class="sourceLineNo">368</span>              .setReplicaId(replicaId)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>              .build();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  /**<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * Gets the result in hbase:meta for the specified region.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * @param connection connection we're using<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param regionName region we're looking for<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @return result of the specified region<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   */<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  public static Result getRegionResult(Connection connection,<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      byte[] regionName) throws IOException {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    Get get = new Get(regionName);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return get(getMetaHTable(connection), get);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>  /**<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * Get regions from the merge qualifier of the specified merged region<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * @return null if it doesn't contain merge qualifier, else two merge regions<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  @Nullable<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  public static Pair&lt;RegionInfo, RegionInfo&gt; getRegionsFromMergeQualifier(<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      Connection connection, byte[] regionName) throws IOException {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    Result result = getRegionResult(connection, regionName);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    RegionInfo mergeA = getRegionInfo(result, HConstants.MERGEA_QUALIFIER);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    RegionInfo mergeB = getRegionInfo(result, HConstants.MERGEB_QUALIFIER);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    if (mergeA == null &amp;&amp; mergeB == null) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      return null;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    return new Pair&lt;&gt;(mergeA, mergeB);<a name="line.398"></a>
+<span class="sourceLineNo">399</span> }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>  /**<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   * Checks if the specified table exists.  Looks at the hbase:meta table hosted on<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   * the specified server.<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * @param connection connection we're using<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   * @param tableName table to check<a name="line.405"></a>
+<span class="sourceLineNo">406</span>   * @return true if the table exists in meta, false if not<a name="line.406"></a>
+<span class="sourceLineNo">407</span>   */<a name="line.407"></a>
+<span class="sourceLineNo">408</span>  public static boolean tableExists(Connection connection,<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      final TableName tableName)<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  throws IOException {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // Catalog tables always exist.<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    return tableName.equals(TableName.META_TABLE_NAME)<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        || getTableState(connection, tableName) != null;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  }<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>  /**<a name="line.416"></a>
+<span class="sourceLineNo">417</span>   * Lists all of the regions currently in META.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   *<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * @param connection to connect with<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   * @param excludeOfflinedSplitParents False if we are to include offlined/splitparents regions,<a name="line.420"></a>
+<span class="sourceLineNo">421</span>   *                                    true and we'll leave out offlined regions from returned list<a name="line.421"></a>
+<span class="sourceLineNo">422</span>   * @return List of all user-space regions.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>   */<a name="line.423"></a>
+<span class="sourceLineNo">424</span>  @VisibleForTesting<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  public static List&lt;RegionInfo&gt; getAllRegions(Connection connection,<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      boolean excludeOfflinedSplitParents)<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      throws IOException {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result;<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>    result = getTableRegionsAndLocations(connection, null,<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        excludeOfflinedSplitParents);<a name="line.431"></a>
 <span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>  }<a name="line.433"></a>
+<span class="sourceLineNo">433</span>    return getListOfRegionInfos(result);<a name="line.433"></a>
 <span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>  /**<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * Gets all of the regions of the specified table. Do not use this method<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * to get meta table regions, use methods in MetaTableLocator instead.<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * @param connection connection we're using<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   * @param tableName table we're looking for<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   * @return Ordered list of {@link RegionInfo}.<a name="line.440"></a>
-<span class="sourceLineNo">441</span>   */<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  public static List&lt;RegionInfo&gt; getTableRegions(Connection connection, TableName tableName)<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  throws IOException {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    return getTableRegions(connection, tableName, false);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>  /**<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * Gets all of the regions of the specified table. Do not use this method<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   * to get meta table regions, use methods in MetaTableLocator instead.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * @param connection connection we're using<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * @param tableName table we're looking for<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * @param excludeOfflinedSplitParents If true, do not include offlined split<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * parents in the return.<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * @return Ordered list of {@link RegionInfo}.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   */<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  public static List&lt;RegionInfo&gt; getTableRegions(Connection connection, TableName tableName,<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      final boolean excludeOfflinedSplitParents) throws IOException {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result =<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      getTableRegionsAndLocations(connection, tableName, excludeOfflinedSplitParents);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    return getListOfRegionInfos(result);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>  }<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>  private static List&lt;RegionInfo&gt; getListOfRegionInfos(<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      final List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; pairs) {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    if (pairs == null || pairs.isEmpty()) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      return Collections.emptyList();<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    List&lt;RegionInfo&gt; result = new ArrayList&lt;&gt;(pairs.size());<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    for (Pair&lt;RegionInfo, ServerName&gt; pair : pairs) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      result.add(pair.getFirst());<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return result;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * @param tableName table we're working with<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @return start row for scanning META according to query type<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  public static byte[] getTableStartRowForMeta(TableName tableName, QueryType type) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    if (tableName == null) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      return null;<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    }<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    switch (type) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    case REGION:<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      byte[] startRow = new byte[tableName.getName().length + 2];<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      System.arraycopy(tableName.getName(), 0, startRow, 0, tableName.getName().length);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      startRow[startRow.length - 2] = HConstants.DELIMITER;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      startRow[startRow.length - 1] = HConstants.DELIMITER;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      return startRow;<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    case ALL:<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    case TABLE:<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    default:<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      return tableName.getName();<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  }<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>  /**<a name="line.497"></a>
-<span class="sourceLineNo">498</span>   * @param tableName table we're working with<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * @return stop row for scanning META according to query type<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   */<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  public static byte[] getTableStopRowForMeta(TableName tableName, QueryType type) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    if (tableName == null) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      return null;<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    }<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    final byte[] stopRow;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    switch (type) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    case REGION:<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      stopRow = new byte[tableName.getName().length + 3];<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      System.arraycopy(tableName.getName(), 0, stopRow, 0, tableName.getName().length);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      stopRow[stopRow.length - 3] = ' ';<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      stopRow[stopRow.length - 2] = HConstants.DELIMITER;<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      stopRow[stopRow.length - 1] = HConstants.DELIMITER;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      break;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    case ALL:<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    case TABLE:<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    default:<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      stopRow = new byte[tableName.getName().length + 1];<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      System.arraycopy(tableName.getName(), 0, stopRow, 0, tableName.getName().length);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      stopRow[stopRow.length - 1] = ' ';<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      break;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    }<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    return stopRow;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>  /**<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * This method creates a Scan object that will only scan catalog rows that<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * belong to the specified table. It doesn't specify any columns.<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   * This is a better alternative to just using a start row and scan until<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * it hits a new table since that requires parsing the HRI to get the table<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * name.<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * @param tableName bytes of table's name<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * @return configured Scan object<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   */<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  @Deprecated<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  public static Scan getScanForTableName(Connection connection, TableName tableName) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    // Start key is just the table name with delimiters<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    byte[] startKey = getTableStartRowForMeta(tableName, QueryType.REGION);<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    // Stop key appends the smallest possible char to the table name<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    byte[] stopKey = getTableStopRowForMeta(tableName, QueryType.REGION);<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>    Scan scan = getMetaScan(connection, -1);<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    scan.setStartRow(startKey);<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    scan.setStopRow(stopKey);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    return scan;<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>  private static Scan getMetaScan(Connection connection, int rowUpperLimit) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    Scan scan = new Scan();<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    int scannerCaching = connection.getConfiguration()<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        .getInt(HConstants.HBASE_META_SCANNER_CACHING,<a name="line.550"></a>
-<span class="sourceLineNo">551</span>            HConstants.DEFAULT_HBASE_META_SCANNER_CACHING);<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    if (connection.getConfiguration().getBoolean(HConstants.USE_META_REPLICAS,<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        HConstants.DEFAULT_USE_META_REPLICAS)) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      scan.setConsistency(Consistency.TIMELINE);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    if (rowUpperLimit &gt; 0) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      scan.setLimit(rowUpperLimit);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      scan.setReadType(Scan.ReadType.PREAD);<a name="line.558"></a>
-<

<TRUNCATED>

[25/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index e1c6d75..1391d55 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,16 +5,16 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 1.5.0.alpha.15, based on Prawn 2.2.2)
 /Producer (Apache HBase Team)
-/ModDate (D:20180331144603+00'00')
-/CreationDate (D:20180331144603+00'00')
+/ModDate (D:20180401144554+00'00')
+/CreationDate (D:20180401144554+00'00')
 >>
 endobj
 2 0 obj
 << /Type /Catalog
 /Pages 3 0 R
 /Names 26 0 R
-/Outlines 4519 0 R
-/PageLabels 4742 0 R
+/Outlines 4513 0 R
+/PageLabels 4736 0 R
 /PageMode /UseOutlines
 /OpenAction [7 0 R /FitH 842.89]
 /ViewerPreferences << /DisplayDocTitle true
@@ -24,7 +24,7 @@ endobj
 3 0 obj
 << /Type /Pages
 /Count 706
-/Kids [7 0 R 12 0 R 14 0 R 16 0 R 18 0 R 20 0 R 22 0 R 24 0 R 44 0 R 47 0 R 50 0 R 54 0 R 61 0 R 65 0 R 67 0 R 69 0 R 76 0 R 79 0 R 81 0 R 87 0 R 90 0 R 92 0 R 94 0 R 101 0 R 107 0 R 112 0 R 114 0 R 130 0 R 135 0 R 142 0 R 151 0 R 159 0 R 168 0 R 179 0 R 183 0 R 185 0 R 189 0 R 198 0 R 207 0 R 215 0 R 224 0 R 229 0 R 238 0 R 246 0 R 255 0 R 268 0 R 275 0 R 285 0 R 293 0 R 301 0 R 308 0 R 316 0 R 322 0 R 328 0 R 335 0 R 343 0 R 354 0 R 363 0 R 375 0 R 383 0 R 391 0 R 398 0 R 407 0 R 415 0 R 425 0 R 433 0 R 440 0 R 449 0 R 461 0 R 470 0 R 477 0 R 485 0 R 493 0 R 502 0 R 509 0 R 514 0 R 518 0 R 523 0 R 527 0 R 543 0 R 554 0 R 558 0 R 573 0 R 578 0 R 583 0 R 585 0 R 587 0 R 590 0 R 592 0 R 594 0 R 602 0 R 608 0 R 613 0 R 618 0 R 625 0 R 635 0 R 643 0 R 647 0 R 651 0 R 653 0 R 664 0 R 674 0 R 681 0 R 693 0 R 704 0 R 713 0 R 721 0 R 727 0 R 730 0 R 734 0 R 738 0 R 741 0 R 744 0 R 746 0 R 749 0 R 754 0 R 756 0 R 761 0 R 765 0 R 770 0 R 774 0 R 777 0 R 783 0 R 785 0 R 790 0 R 798 0 R 800 0 
 R 803 0 R 806 0 R 810 0 R 813 0 R 828 0 R 835 0 R 844 0 R 855 0 R 861 0 R 871 0 R 882 0 R 885 0 R 889 0 R 892 0 R 897 0 R 906 0 R 914 0 R 918 0 R 922 0 R 927 0 R 931 0 R 933 0 R 948 0 R 959 0 R 964 0 R 970 0 R 973 0 R 981 0 R 989 0 R 994 0 R 1000 0 R 1005 0 R 1007 0 R 1009 0 R 1011 0 R 1021 0 R 1029 0 R 1033 0 R 1040 0 R 1047 0 R 1055 0 R 1059 0 R 1065 0 R 1070 0 R 1078 0 R 1082 0 R 1087 0 R 1089 0 R 1095 0 R 1102 0 R 1104 0 R 1111 0 R 1122 0 R 1126 0 R 1128 0 R 1130 0 R 1134 0 R 1137 0 R 1142 0 R 1145 0 R 1157 0 R 1161 0 R 1167 0 R 1175 0 R 1180 0 R 1184 0 R 1188 0 R 1190 0 R 1193 0 R 1196 0 R 1199 0 R 1203 0 R 1207 0 R 1211 0 R 1216 0 R 1220 0 R 1223 0 R 1225 0 R 1235 0 R 1238 0 R 1246 0 R 1255 0 R 1261 0 R 1265 0 R 1267 0 R 1277 0 R 1280 0 R 1286 0 R 1295 0 R 1298 0 R 1305 0 R 1313 0 R 1315 0 R 1317 0 R 1326 0 R 1328 0 R 1330 0 R 1333 0 R 1335 0 R 1337 0 R 1339 0 R 1341 0 R 1344 0 R 1348 0 R 1353 0 R 1355 0 R 1357 0 R 1359 0 R 1364 0 R 1372 0 R 1377 0 R 1380 0 R 1382 0 R 1385 0 R
  1389 0 R 1393 0 R 1396 0 R 1398 0 R 1400 0 R 1403 0 R 1409 0 R 1414 0 R 1422 0 R 1436 0 R 1450 0 R 1454 0 R 1459 0 R 1472 0 R 1477 0 R 1492 0 R 1500 0 R 1504 0 R 1512 0 R 1527 0 R 1541 0 R 1553 0 R 1558 0 R 1564 0 R 1573 0 R 1579 0 R 1584 0 R 1592 0 R 1595 0 R 1605 0 R 1611 0 R 1614 0 R 1627 0 R 1629 0 R 1635 0 R 1639 0 R 1641 0 R 1649 0 R 1657 0 R 1661 0 R 1663 0 R 1665 0 R 1677 0 R 1683 0 R 1692 0 R 1698 0 R 1712 0 R 1717 0 R 1726 0 R 1734 0 R 1740 0 R 1745 0 R 1751 0 R 1754 0 R 1757 0 R 1762 0 R 1766 0 R 1773 0 R 1777 0 R 1782 0 R 1791 0 R 1796 0 R 1801 0 R 1803 0 R 1811 0 R 1818 0 R 1824 0 R 1829 0 R 1833 0 R 1836 0 R 1841 0 R 1846 0 R 1854 0 R 1856 0 R 1858 0 R 1861 0 R 1869 0 R 1872 0 R 1879 0 R 1888 0 R 1891 0 R 1896 0 R 1898 0 R 1901 0 R 1904 0 R 1907 0 R 1918 0 R 1923 0 R 1928 0 R 1930 0 R 1939 0 R 1946 0 R 1954 0 R 1960 0 R 1965 0 R 1967 0 R 1976 0 R 1985 0 R 1996 0 R 2002 0 R 2009 0 R 2011 0 R 2016 0 R 2018 0 R 2020 0 R 2023 0 R 2026 0 R 2029 0 R 2034 0 R 2038 0 R 2049 0
  R 2052 0 R 2057 0 R 2060 0 R 2062 0 R 2067 0 R 2077 0 R 2079 0 R 2081 0 R 2083 0 R 2085 0 R 2088 0 R 2090 0 R 2092 0 R 2095 0 R 2097 0 R 2099 0 R 2104 0 R 2109 0 R 2118 0 R 2120 0 R 2122 0 R 2129 0 R 2131 0 R 2136 0 R 2138 0 R 2140 0 R 2147 0 R 2152 0 R 2156 0 R 2160 0 R 2164 0 R 2166 0 R 2168 0 R 2172 0 R 2175 0 R 2177 0 R 2179 0 R 2183 0 R 2185 0 R 2188 0 R 2190 0 R 2192 0 R 2194 0 R 2201 0 R 2204 0 R 2209 0 R 2211 0 R 2213 0 R 2215 0 R 2217 0 R 2225 0 R 2236 0 R 2250 0 R 2261 0 R 2265 0 R 2271 0 R 2275 0 R 2278 0 R 2283 0 R 2288 0 R 2290 0 R 2293 0 R 2295 0 R 2297 0 R 2299 0 R 2304 0 R 2306 0 R 2319 0 R 2322 0 R 2330 0 R 2336 0 R 2348 0 R 2362 0 R 2375 0 R 2392 0 R 2396 0 R 2398 0 R 2402 0 R 2420 0 R 2427 0 R 2439 0 R 2443 0 R 2447 0 R 2456 0 R 2468 0 R 2473 0 R 2483 0 R 2496 0 R 2516 0 R 2525 0 R 2528 0 R 2537 0 R 2554 0 R 2561 0 R 2564 0 R 2569 0 R 2573 0 R 2576 0 R 2585 0 R 2593 0 R 2597 0 R 2599 0 R 2603 0 R 2617 0 R 2626 0 R 2631 0 R 2635 0 R 2638 0 R 2640 0 R 2642 0 R 2644
  0 R 2649 0 R 2662 0 R 2672 0 R 2680 0 R 2686 0 R 2692 0 R 2702 0 R 2709 0 R 2715 0 R 2717 0 R 2725 0 R 2734 0 R 2743 0 R 2748 0 R 2756 0 R 2760 0 R 2770 0 R 2778 0 R 2787 0 R 2792 0 R 2796 0 R 2800 0 R 2802 0 R 2808 0 R 2812 0 R 2816 0 R 2822 0 R 2828 0 R 2831 0 R 2837 0 R 2841 0 R 2851 0 R 2856 0 R 2861 0 R 2870 0 R 2876 0 R 2883 0 R 2886 0 R 2891 0 R 2897 0 R 2901 0 R 2904 0 R 2909 0 R 2919 0 R 2925 0 R 2927 0 R 2931 0 R 2938 0 R 2941 0 R 2951 0 R 2957 0 R 2966 0 R 2969 0 R 2979 0 R 2984 0 R 2988 0 R 2996 0 R 3002 0 R 3006 0 R 3008 0 R 3019 0 R 3024 0 R 3027 0 R 3029 0 R 3031 0 R 3041 0 R 3048 0 R 3052 0 R 3055 0 R 3061 0 R 3064 0 R 3067 0 R 3070 0 R 3077 0 R 3082 0 R 3088 0 R 3092 0 R 3095 0 R 3098 0 R 3100 0 R 3104 0 R 3115 0 R 3117 0 R 3121 0 R 3124 0 R 3128 0 R 3131 0 R 3135 0 R 3137 0 R 3150 0 R 3155 0 R 3160 0 R 3167 0 R 3176 0 R 3178 0 R 3186 0 R 3204 0 R 3216 0 R 3222 0 R 3238 0 R 3241 0 R 3246 0 R 3248 0 R 3256 0 R 3261 0 R 3264 0 R 3266 0 R 3268 0 R 3270 0 R 3273 0 R 32
 90 0 R 3293 0 R 3299 0 R 3305 0 R 3314 0 R 3320 0 R 3330 0 R 3341 0 R 3348 0 R 3357 0 R 3362 0 R 3365 0 R 3373 0 R 3377 0 R 3382 0 R 3387 0 R 3400 0 R 3403 0 R 3409 0 R 3414 0 R 3423 0 R 3432 0 R 3438 0 R 3451 0 R 3457 0 R 3461 0 R 3469 0 R 3473 0 R 3478 0 R 3480 0 R 3486 0 R 3493 0 R 3495 0 R 3502 0 R 3504 0 R 3512 0 R 3519 0 R 3525 0 R 3532 0 R 3542 0 R 3549 0 R 3561 0 R 3568 0 R 3581 0 R 3588 0 R 3590 0 R 3595 0 R 3608 0 R 3613 0 R 3619 0 R 3623 0 R 3626 0 R 3631 0 R 3633 0 R 3637 0 R 3639 0 R 3643 0 R 3646 0 R 3649 0 R 3657 0 R 3659 0 R 3663 0 R 3666 0 R 3673 0 R 3679 0 R 3683 0 R 3686 0 R 3688 0 R 3692 0 R 3697 0 R 3702 0 R 3705 0 R 3718 0 R 3723 0 R 3727 0 R 3730 0 R 3738 0 R 3742 0 R 3750 0 R 3755 0 R 3757 0 R 3763 0 R 3765 0 R 3770 0 R 3774 0 R 3779 0 R 3783 0 R 3796 0 R 3812 0 R 3827 0 R 3832 0 R 3835 0 R 3838 0 R 3844 0 R 3849 0 R 3851 0 R 3853 0 R 3855 0 R 3857 0 R 3859 0 R 3868 0 R 3872 0 R 3876 0 R 3880 0 R 3882 0 R 3889 0 R 3899 0 R 3906 0 R 3909 0 R 3912 0 R 3914 0 R 
 3921 0 R 3928 0 R 3938 0 R 3942 0 R 3947 0 R 3951 0 R 3954 0 R 3959 0 R 3962 0 R 3978 0 R 3982 0 R 4005 0 R 4009 0 R 4016 0 R 4027 0 R 4036 0 R 4038 0 R 4041 0 R 4044 0 R 4060 0 R 4066 0 R 4073 0 R]
+/Kids [7 0 R 12 0 R 14 0 R 16 0 R 18 0 R 20 0 R 22 0 R 24 0 R 44 0 R 47 0 R 50 0 R 54 0 R 61 0 R 65 0 R 67 0 R 69 0 R 76 0 R 79 0 R 81 0 R 87 0 R 90 0 R 92 0 R 94 0 R 101 0 R 107 0 R 112 0 R 114 0 R 130 0 R 135 0 R 142 0 R 151 0 R 159 0 R 168 0 R 179 0 R 183 0 R 185 0 R 189 0 R 198 0 R 207 0 R 215 0 R 224 0 R 229 0 R 238 0 R 246 0 R 255 0 R 268 0 R 275 0 R 285 0 R 293 0 R 301 0 R 308 0 R 316 0 R 322 0 R 328 0 R 335 0 R 343 0 R 354 0 R 363 0 R 375 0 R 383 0 R 391 0 R 398 0 R 407 0 R 415 0 R 425 0 R 433 0 R 440 0 R 449 0 R 461 0 R 470 0 R 477 0 R 485 0 R 493 0 R 502 0 R 509 0 R 514 0 R 518 0 R 523 0 R 527 0 R 543 0 R 554 0 R 558 0 R 573 0 R 578 0 R 583 0 R 585 0 R 587 0 R 590 0 R 592 0 R 594 0 R 602 0 R 608 0 R 613 0 R 618 0 R 625 0 R 635 0 R 643 0 R 647 0 R 651 0 R 653 0 R 664 0 R 674 0 R 681 0 R 693 0 R 704 0 R 713 0 R 721 0 R 727 0 R 730 0 R 734 0 R 738 0 R 741 0 R 744 0 R 746 0 R 749 0 R 754 0 R 756 0 R 761 0 R 765 0 R 770 0 R 774 0 R 777 0 R 783 0 R 785 0 R 790 0 R 798 0 R 800 0 
 R 803 0 R 806 0 R 810 0 R 813 0 R 828 0 R 835 0 R 844 0 R 855 0 R 861 0 R 871 0 R 882 0 R 885 0 R 889 0 R 892 0 R 897 0 R 906 0 R 914 0 R 918 0 R 922 0 R 927 0 R 931 0 R 933 0 R 948 0 R 959 0 R 964 0 R 970 0 R 973 0 R 981 0 R 989 0 R 994 0 R 1000 0 R 1005 0 R 1007 0 R 1009 0 R 1011 0 R 1021 0 R 1029 0 R 1033 0 R 1040 0 R 1047 0 R 1055 0 R 1059 0 R 1065 0 R 1070 0 R 1078 0 R 1082 0 R 1087 0 R 1089 0 R 1095 0 R 1102 0 R 1104 0 R 1111 0 R 1122 0 R 1126 0 R 1128 0 R 1130 0 R 1134 0 R 1137 0 R 1142 0 R 1145 0 R 1157 0 R 1161 0 R 1167 0 R 1175 0 R 1180 0 R 1184 0 R 1188 0 R 1190 0 R 1193 0 R 1196 0 R 1199 0 R 1203 0 R 1207 0 R 1211 0 R 1216 0 R 1220 0 R 1223 0 R 1225 0 R 1235 0 R 1238 0 R 1246 0 R 1255 0 R 1261 0 R 1265 0 R 1267 0 R 1277 0 R 1280 0 R 1286 0 R 1295 0 R 1298 0 R 1305 0 R 1313 0 R 1315 0 R 1317 0 R 1326 0 R 1328 0 R 1330 0 R 1333 0 R 1335 0 R 1337 0 R 1339 0 R 1341 0 R 1344 0 R 1348 0 R 1353 0 R 1355 0 R 1357 0 R 1359 0 R 1364 0 R 1372 0 R 1377 0 R 1380 0 R 1382 0 R 1385 0 R
  1389 0 R 1393 0 R 1396 0 R 1398 0 R 1400 0 R 1403 0 R 1409 0 R 1414 0 R 1422 0 R 1436 0 R 1450 0 R 1454 0 R 1459 0 R 1472 0 R 1477 0 R 1492 0 R 1500 0 R 1504 0 R 1512 0 R 1527 0 R 1541 0 R 1553 0 R 1558 0 R 1564 0 R 1573 0 R 1579 0 R 1584 0 R 1592 0 R 1595 0 R 1605 0 R 1611 0 R 1614 0 R 1627 0 R 1629 0 R 1635 0 R 1639 0 R 1641 0 R 1649 0 R 1657 0 R 1661 0 R 1663 0 R 1665 0 R 1677 0 R 1683 0 R 1692 0 R 1698 0 R 1712 0 R 1717 0 R 1726 0 R 1734 0 R 1740 0 R 1745 0 R 1751 0 R 1754 0 R 1757 0 R 1762 0 R 1766 0 R 1773 0 R 1777 0 R 1782 0 R 1791 0 R 1796 0 R 1801 0 R 1803 0 R 1811 0 R 1818 0 R 1824 0 R 1829 0 R 1833 0 R 1836 0 R 1841 0 R 1846 0 R 1854 0 R 1856 0 R 1858 0 R 1861 0 R 1869 0 R 1872 0 R 1879 0 R 1888 0 R 1891 0 R 1896 0 R 1898 0 R 1901 0 R 1904 0 R 1907 0 R 1918 0 R 1923 0 R 1928 0 R 1930 0 R 1939 0 R 1946 0 R 1954 0 R 1960 0 R 1965 0 R 1967 0 R 1976 0 R 1985 0 R 1996 0 R 2002 0 R 2009 0 R 2011 0 R 2016 0 R 2018 0 R 2020 0 R 2023 0 R 2026 0 R 2029 0 R 2034 0 R 2038 0 R 2049 0
  R 2052 0 R 2057 0 R 2060 0 R 2062 0 R 2067 0 R 2077 0 R 2079 0 R 2081 0 R 2083 0 R 2085 0 R 2088 0 R 2090 0 R 2092 0 R 2095 0 R 2097 0 R 2099 0 R 2104 0 R 2109 0 R 2118 0 R 2120 0 R 2122 0 R 2129 0 R 2131 0 R 2136 0 R 2138 0 R 2140 0 R 2147 0 R 2152 0 R 2156 0 R 2160 0 R 2164 0 R 2166 0 R 2168 0 R 2172 0 R 2175 0 R 2177 0 R 2179 0 R 2183 0 R 2185 0 R 2188 0 R 2190 0 R 2192 0 R 2194 0 R 2201 0 R 2204 0 R 2209 0 R 2211 0 R 2213 0 R 2215 0 R 2217 0 R 2225 0 R 2236 0 R 2250 0 R 2261 0 R 2265 0 R 2271 0 R 2275 0 R 2278 0 R 2283 0 R 2288 0 R 2290 0 R 2293 0 R 2295 0 R 2297 0 R 2299 0 R 2304 0 R 2306 0 R 2319 0 R 2322 0 R 2330 0 R 2336 0 R 2348 0 R 2362 0 R 2375 0 R 2392 0 R 2396 0 R 2398 0 R 2402 0 R 2420 0 R 2427 0 R 2439 0 R 2443 0 R 2447 0 R 2456 0 R 2468 0 R 2473 0 R 2483 0 R 2496 0 R 2516 0 R 2525 0 R 2528 0 R 2537 0 R 2554 0 R 2561 0 R 2564 0 R 2569 0 R 2573 0 R 2576 0 R 2585 0 R 2593 0 R 2597 0 R 2599 0 R 2603 0 R 2617 0 R 2626 0 R 2631 0 R 2635 0 R 2638 0 R 2640 0 R 2642 0 R 2644
  0 R 2649 0 R 2662 0 R 2672 0 R 2680 0 R 2686 0 R 2692 0 R 2702 0 R 2709 0 R 2715 0 R 2717 0 R 2725 0 R 2734 0 R 2743 0 R 2748 0 R 2756 0 R 2760 0 R 2770 0 R 2778 0 R 2787 0 R 2792 0 R 2796 0 R 2800 0 R 2802 0 R 2808 0 R 2812 0 R 2816 0 R 2822 0 R 2828 0 R 2831 0 R 2837 0 R 2841 0 R 2851 0 R 2856 0 R 2861 0 R 2870 0 R 2876 0 R 2883 0 R 2886 0 R 2891 0 R 2897 0 R 2901 0 R 2904 0 R 2909 0 R 2919 0 R 2925 0 R 2927 0 R 2931 0 R 2938 0 R 2941 0 R 2951 0 R 2957 0 R 2966 0 R 2969 0 R 2979 0 R 2984 0 R 2988 0 R 2996 0 R 3002 0 R 3006 0 R 3008 0 R 3019 0 R 3024 0 R 3027 0 R 3029 0 R 3031 0 R 3041 0 R 3048 0 R 3052 0 R 3055 0 R 3061 0 R 3064 0 R 3067 0 R 3070 0 R 3077 0 R 3082 0 R 3088 0 R 3092 0 R 3095 0 R 3098 0 R 3100 0 R 3104 0 R 3115 0 R 3117 0 R 3121 0 R 3124 0 R 3128 0 R 3131 0 R 3135 0 R 3137 0 R 3150 0 R 3155 0 R 3160 0 R 3167 0 R 3176 0 R 3178 0 R 3186 0 R 3204 0 R 3216 0 R 3222 0 R 3238 0 R 3241 0 R 3246 0 R 3248 0 R 3256 0 R 3261 0 R 3264 0 R 3266 0 R 3268 0 R 3270 0 R 3273 0 R 32
 90 0 R 3293 0 R 3299 0 R 3305 0 R 3314 0 R 3320 0 R 3330 0 R 3341 0 R 3348 0 R 3357 0 R 3362 0 R 3365 0 R 3373 0 R 3377 0 R 3382 0 R 3387 0 R 3400 0 R 3403 0 R 3409 0 R 3414 0 R 3423 0 R 3432 0 R 3438 0 R 3451 0 R 3457 0 R 3461 0 R 3469 0 R 3473 0 R 3478 0 R 3480 0 R 3486 0 R 3493 0 R 3495 0 R 3502 0 R 3504 0 R 3510 0 R 3518 0 R 3524 0 R 3533 0 R 3540 0 R 3550 0 R 3559 0 R 3570 0 R 3583 0 R 3586 0 R 3588 0 R 3593 0 R 3606 0 R 3611 0 R 3617 0 R 3621 0 R 3624 0 R 3629 0 R 3631 0 R 3635 0 R 3637 0 R 3641 0 R 3644 0 R 3647 0 R 3655 0 R 3657 0 R 3661 0 R 3664 0 R 3671 0 R 3677 0 R 3681 0 R 3684 0 R 3686 0 R 3690 0 R 3695 0 R 3700 0 R 3703 0 R 3712 0 R 3717 0 R 3721 0 R 3724 0 R 3732 0 R 3736 0 R 3744 0 R 3749 0 R 3751 0 R 3757 0 R 3759 0 R 3764 0 R 3768 0 R 3773 0 R 3777 0 R 3790 0 R 3806 0 R 3821 0 R 3826 0 R 3829 0 R 3832 0 R 3838 0 R 3843 0 R 3845 0 R 3847 0 R 3849 0 R 3851 0 R 3853 0 R 3862 0 R 3866 0 R 3870 0 R 3874 0 R 3876 0 R 3883 0 R 3893 0 R 3900 0 R 3903 0 R 3906 0 R 3908 0 R 
 3915 0 R 3922 0 R 3932 0 R 3936 0 R 3941 0 R 3945 0 R 3948 0 R 3953 0 R 3956 0 R 3972 0 R 3976 0 R 3999 0 R 4003 0 R 4010 0 R 4021 0 R 4030 0 R 4032 0 R 4035 0 R 4038 0 R 4054 0 R 4060 0 R 4067 0 R]
 >>
 endobj
 4 0 obj
@@ -187,11 +187,11 @@ endobj
 << /Type /Font
 /BaseFont /71be00+NotoSerif
 /Subtype /TrueType
-/FontDescriptor 4744 0 R
+/FontDescriptor 4738 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 4746 0 R
-/ToUnicode 4745 0 R
+/Widths 4740 0 R
+/ToUnicode 4739 0 R
 >>
 endobj
 11 0 obj
@@ -1750,7 +1750,7 @@ endobj
 /F1.0 10 0 R
 >>
 >>
-/Annots [4075 0 R 4076 0 R 4077 0 R 4078 0 R 4079 0 R 4080 0 R 4081 0 R 4082 0 R 4083 0 R 4084 0 R 4085 0 R 4086 0 R 4087 0 R 4088 0 R 4089 0 R 4090 0 R 4091 0 R 4092 0 R 4093 0 R 4094 0 R 4095 0 R 4096 0 R 4097 0 R 4098 0 R 4099 0 R 4100 0 R 4101 0 R 4102 0 R 4103 0 R 4104 0 R 4105 0 R 4106 0 R 4107 0 R 4108 0 R 4109 0 R 4110 0 R 4111 0 R 4112 0 R 4113 0 R 4114 0 R 4115 0 R 4116 0 R 4117 0 R 4118 0 R 4119 0 R 4120 0 R 4121 0 R 4122 0 R 4123 0 R 4124 0 R 4125 0 R 4126 0 R 4127 0 R 4128 0 R 4129 0 R 4130 0 R 4131 0 R 4132 0 R 4133 0 R 4134 0 R 4135 0 R 4136 0 R 4137 0 R 4138 0 R 4139 0 R 4140 0 R 4141 0 R 4142 0 R 4143 0 R 4144 0 R 4145 0 R 4146 0 R 4147 0 R 4148 0 R 4149 0 R 4150 0 R]
+/Annots [4069 0 R 4070 0 R 4071 0 R 4072 0 R 4073 0 R 4074 0 R 4075 0 R 4076 0 R 4077 0 R 4078 0 R 4079 0 R 4080 0 R 4081 0 R 4082 0 R 4083 0 R 4084 0 R 4085 0 R 4086 0 R 4087 0 R 4088 0 R 4089 0 R 4090 0 R 4091 0 R 4092 0 R 4093 0 R 4094 0 R 4095 0 R 4096 0 R 4097 0 R 4098 0 R 4099 0 R 4100 0 R 4101 0 R 4102 0 R 4103 0 R 4104 0 R 4105 0 R 4106 0 R 4107 0 R 4108 0 R 4109 0 R 4110 0 R 4111 0 R 4112 0 R 4113 0 R 4114 0 R 4115 0 R 4116 0 R 4117 0 R 4118 0 R 4119 0 R 4120 0 R 4121 0 R 4122 0 R 4123 0 R 4124 0 R 4125 0 R 4126 0 R 4127 0 R 4128 0 R 4129 0 R 4130 0 R 4131 0 R 4132 0 R 4133 0 R 4134 0 R 4135 0 R 4136 0 R 4137 0 R 4138 0 R 4139 0 R 4140 0 R 4141 0 R 4142 0 R 4143 0 R 4144 0 R]
 >>
 endobj
 13 0 obj
@@ -3417,7 +3417,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4151 0 R 4152 0 R 4153 0 R 4154 0 R 4155 0 R 4156 0 R 4157 0 R 4158 0 R 4159 0 R 4160 0 R 4161 0 R 4162 0 R 4163 0 R 4164 0 R 4165 0 R 4166 0 R 4167 0 R 4168 0 R 4169 0 R 4170 0 R 4171 0 R 4172 0 R 4173 0 R 4174 0 R 4175 0 R 4176 0 R 4177 0 R 4178 0 R 4179 0 R 4180 0 R 4181 0 R 4182 0 R 4183 0 R 4184 0 R 4185 0 R 4186 0 R 4187 0 R 4188 0 R 4189 0 R 4190 0 R 4191 0 R 4192 0 R 4193 0 R 4194 0 R 4195 0 R 4196 0 R 4197 0 R 4198 0 R 4199 0 R 4200 0 R 4201 0 R 4202 0 R 4203 0 R 4204 0 R 4205 0 R 4206 0 R 4207 0 R 4208 0 R 4209 0 R 4210 0 R 4211 0 R 4212 0 R 4213 0 R 4214 0 R 4215 0 R 4216 0 R 4217 0 R 4218 0 R 4219 0 R 4220 0 R 4221 0 R 4222 0 R 4223 0 R 4224 0 R 4225 0 R 4226 0 R 4227 0 R 4228 0 R 4229 0 R 4230 0 R 4231 0 R 4232 0 R]
+/Annots [4145 0 R 4146 0 R 4147 0 R 4148 0 R 4149 0 R 4150 0 R 4151 0 R 4152 0 R 4153 0 R 4154 0 R 4155 0 R 4156 0 R 4157 0 R 4158 0 R 4159 0 R 4160 0 R 4161 0 R 4162 0 R 4163 0 R 4164 0 R 4165 0 R 4166 0 R 4167 0 R 4168 0 R 4169 0 R 4170 0 R 4171 0 R 4172 0 R 4173 0 R 4174 0 R 4175 0 R 4176 0 R 4177 0 R 4178 0 R 4179 0 R 4180 0 R 4181 0 R 4182 0 R 4183 0 R 4184 0 R 4185 0 R 4186 0 R 4187 0 R 4188 0 R 4189 0 R 4190 0 R 4191 0 R 4192 0 R 4193 0 R 4194 0 R 4195 0 R 4196 0 R 4197 0 R 4198 0 R 4199 0 R 4200 0 R 4201 0 R 4202 0 R 4203 0 R 4204 0 R 4205 0 R 4206 0 R 4207 0 R 4208 0 R 4209 0 R 4210 0 R 4211 0 R 4212 0 R 4213 0 R 4214 0 R 4215 0 R 4216 0 R 4217 0 R 4218 0 R 4219 0 R 4220 0 R 4221 0 R 4222 0 R 4223 0 R 4224 0 R 4225 0 R 4226 0 R]
 >>
 endobj
 15 0 obj
@@ -5084,7 +5084,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4233 0 R 4234 0 R 4235 0 R 4236 0 R 4237 0 R 4238 0 R 4239 0 R 4240 0 R 4241 0 R 4242 0 R 4243 0 R 4244 0 R 4245 0 R 4246 0 R 4247 0 R 4248 0 R 4249 0 R 4250 0 R 4251 0 R 4252 0 R 4253 0 R 4254 0 R 4255 0 R 4256 0 R 4257 0 R 4258 0 R 4259 0 R 4260 0 R 4261 0 R 4262 0 R 4263 0 R 4264 0 R 4265 0 R 4266 0 R 4267 0 R 4268 0 R 4269 0 R 4270 0 R 4271 0 R 4272 0 R 4273 0 R 4274 0 R 4275 0 R 4276 0 R 4277 0 R 4278 0 R 4279 0 R 4280 0 R 4281 0 R 4282 0 R 4283 0 R 4284 0 R 4285 0 R 4286 0 R 4287 0 R 4288 0 R 4289 0 R 4290 0 R 4291 0 R 4292 0 R 4293 0 R 4294 0 R 4295 0 R 4296 0 R 4297 0 R 4298 0 R 4299 0 R 4300 0 R 4301 0 R 4302 0 R 4303 0 R 4304 0 R 4305 0 R 4306 0 R 4307 0 R 4308 0 R 4309 0 R 4310 0 R 4311 0 R 4312 0 R 4313 0 R 4314 0 R]
+/Annots [4227 0 R 4228 0 R 4229 0 R 4230 0 R 4231 0 R 4232 0 R 4233 0 R 4234 0 R 4235 0 R 4236 0 R 4237 0 R 4238 0 R 4239 0 R 4240 0 R 4241 0 R 4242 0 R 4243 0 R 4244 0 R 4245 0 R 4246 0 R 4247 0 R 4248 0 R 4249 0 R 4250 0 R 4251 0 R 4252 0 R 4253 0 R 4254 0 R 4255 0 R 4256 0 R 4257 0 R 4258 0 R 4259 0 R 4260 0 R 4261 0 R 4262 0 R 4263 0 R 4264 0 R 4265 0 R 4266 0 R 4267 0 R 4268 0 R 4269 0 R 4270 0 R 4271 0 R 4272 0 R 4273 0 R 4274 0 R 4275 0 R 4276 0 R 4277 0 R 4278 0 R 4279 0 R 4280 0 R 4281 0 R 4282 0 R 4283 0 R 4284 0 R 4285 0 R 4286 0 R 4287 0 R 4288 0 R 4289 0 R 4290 0 R 4291 0 R 4292 0 R 4293 0 R 4294 0 R 4295 0 R 4296 0 R 4297 0 R 4298 0 R 4299 0 R 4300 0 R 4301 0 R 4302 0 R 4303 0 R 4304 0 R 4305 0 R 4306 0 R 4307 0 R 4308 0 R]
 >>
 endobj
 17 0 obj
@@ -6751,7 +6751,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4315 0 R 4316 0 R 4317 0 R 4318 0 R 4319 0 R 4320 0 R 4321 0 R 4322 0 R 4323 0 R 4324 0 R 4325 0 R 4326 0 R 4327 0 R 4328 0 R 4329 0 R 4330 0 R 4331 0 R 4332 0 R 4333 0 R 4334 0 R 4335 0 R 4336 0 R 4337 0 R 4338 0 R 4339 0 R 4340 0 R 4341 0 R 4342 0 R 4343 0 R 4344 0 R 4345 0 R 4346 0 R 4347 0 R 4348 0 R 4349 0 R 4350 0 R 4351 0 R 4352 0 R 4353 0 R 4354 0 R 4355 0 R 4356 0 R 4357 0 R 4358 0 R 4359 0 R 4360 0 R 4361 0 R 4362 0 R 4363 0 R 4364 0 R 4365 0 R 4366 0 R 4367 0 R 4368 0 R 4369 0 R 4370 0 R 4371 0 R 4372 0 R 4373 0 R 4374 0 R 4375 0 R 4376 0 R 4377 0 R 4378 0 R 4379 0 R 4380 0 R 4381 0 R 4382 0 R 4383 0 R 4384 0 R 4385 0 R 4386 0 R 4387 0 R 4388 0 R 4389 0 R 4390 0 R 4391 0 R 4392 0 R 4393 0 R 4394 0 R 4395 0 R 4396 0 R]
+/Annots [4309 0 R 4310 0 R 4311 0 R 4312 0 R 4313 0 R 4314 0 R 4315 0 R 4316 0 R 4317 0 R 4318 0 R 4319 0 R 4320 0 R 4321 0 R 4322 0 R 4323 0 R 4324 0 R 4325 0 R 4326 0 R 4327 0 R 4328 0 R 4329 0 R 4330 0 R 4331 0 R 4332 0 R 4333 0 R 4334 0 R 4335 0 R 4336 0 R 4337 0 R 4338 0 R 4339 0 R 4340 0 R 4341 0 R 4342 0 R 4343 0 R 4344 0 R 4345 0 R 4346 0 R 4347 0 R 4348 0 R 4349 0 R 4350 0 R 4351 0 R 4352 0 R 4353 0 R 4354 0 R 4355 0 R 4356 0 R 4357 0 R 4358 0 R 4359 0 R 4360 0 R 4361 0 R 4362 0 R 4363 0 R 4364 0 R 4365 0 R 4366 0 R 4367 0 R 4368 0 R 4369 0 R 4370 0 R 4371 0 R 4372 0 R 4373 0 R 4374 0 R 4375 0 R 4376 0 R 4377 0 R 4378 0 R 4379 0 R 4380 0 R 4381 0 R 4382 0 R 4383 0 R 4384 0 R 4385 0 R 4386 0 R 4387 0 R 4388 0 R 4389 0 R 4390 0 R]
 >>
 endobj
 19 0 obj
@@ -8429,7 +8429,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4397 0 R 4398 0 R 4399 0 R 4400 0 R 4401 0 R 4402 0 R 4403 0 R 4404 0 R 4405 0 R 4406 0 R 4407 0 R 4408 0 R 4409 0 R 4410 0 R 4411 0 R 4412 0 R 4413 0 R 4414 0 R 4415 0 R 4416 0 R 4417 0 R 4418 0 R 4419 0 R 4420 0 R 4421 0 R 4422 0 R 4423 0 R 4424 0 R 4425 0 R 4426 0 R 4427 0 R 4428 0 R 4429 0 R 4430 0 R 4431 0 R 4432 0 R 4433 0 R 4434 0 R 4435 0 R 4436 0 R 4437 0 R 4438 0 R 4439 0 R 4440 0 R 4441 0 R 4442 0 R 4443 0 R 4444 0 R 4445 0 R 4446 0 R 4447 0 R 4448 0 R 4449 0 R 4450 0 R 4451 0 R 4452 0 R 4453 0 R 4454 0 R 4455 0 R 4456 0 R 4457 0 R 4458 0 R 4459 0 R 4460 0 R 4461 0 R 4462 0 R 4463 0 R 4464 0 R 4465 0 R 4466 0 R 4467 0 R 4468 0 R 4469 0 R 4470 0 R 4471 0 R 4472 0 R 4473 0 R 4474 0 R 4475 0 R 4476 0 R 4477 0 R 4478 0 R 4479 0 R 4480 0 R]
+/Annots [4391 0 R 4392 0 R 4393 0 R 4394 0 R 4395 0 R 4396 0 R 4397 0 R 4398 0 R 4399 0 R 4400 0 R 4401 0 R 4402 0 R 4403 0 R 4404 0 R 4405 0 R 4406 0 R 4407 0 R 4408 0 R 4409 0 R 4410 0 R 4411 0 R 4412 0 R 4413 0 R 4414 0 R 4415 0 R 4416 0 R 4417 0 R 4418 0 R 4419 0 R 4420 0 R 4421 0 R 4422 0 R 4423 0 R 4424 0 R 4425 0 R 4426 0 R 4427 0 R 4428 0 R 4429 0 R 4430 0 R 4431 0 R 4432 0 R 4433 0 R 4434 0 R 4435 0 R 4436 0 R 4437 0 R 4438 0 R 4439 0 R 4440 0 R 4441 0 R 4442 0 R 4443 0 R 4444 0 R 4445 0 R 4446 0 R 4447 0 R 4448 0 R 4449 0 R 4450 0 R 4451 0 R 4452 0 R 4453 0 R 4454 0 R 4455 0 R 4456 0 R 4457 0 R 4458 0 R 4459 0 R 4460 0 R 4461 0 R 4462 0 R 4463 0 R 4464 0 R 4465 0 R 4466 0 R 4467 0 R 4468 0 R 4469 0 R 4470 0 R 4471 0 R 4472 0 R 4473 0 R 4474 0 R]
 >>
 endobj
 21 0 obj
@@ -9176,7 +9176,7 @@ endobj
 /Font << /F1.0 10 0 R
 >>
 >>
-/Annots [4481 0 R 4482 0 R 4483 0 R 4484 0 R 4485 0 R 4486 0 R 4487 0 R 4488 0 R 4489 0 R 4490 0 R 4491 0 R 4492 0 R 4493 0 R 4494 0 R 4495 0 R 4496 0 R 4497 0 R 4498 0 R 4499 0 R 4500 0 R 4501 0 R 4502 0 R 4503 0 R 4504 0 R 4505 0 R 4506 0 R 4507 0 R 4508 0 R 4509 0 R 4510 0 R 4511 0 R 4512 0 R 4513 0 R 4514 0 R 4515 0 R 4516 0 R]
+/Annots [4475 0 R 4476 0 R 4477 0 R 4478 0 R 4479 0 R 4480 0 R 4481 0 R 4482 0 R 4483 0 R 4484 0 R 4485 0 R 4486 0 R 4487 0 R 4488 0 R 4489 0 R 4490 0 R 4491 0 R 4492 0 R 4493 0 R 4494 0 R 4495 0 R 4496 0 R 4497 0 R 4498 0 R 4499 0 R 4500 0 R 4501 0 R 4502 0 R 4503 0 R 4504 0 R 4505 0 R 4506 0 R 4507 0 R 4508 0 R 4509 0 R 4510 0 R]
 >>
 endobj
 23 0 obj
@@ -9988,7 +9988,7 @@ endobj
 /F4.0 35 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [30 0 R 31 0 R 32 0 R 34 0 R 36 0 R 37 0 R 39 0 R 40 0 R 41 0 R]
@@ -10003,7 +10003,7 @@ endobj
 >>
 endobj
 27 0 obj
-<< /Kids [638 0 R 3552 0 R 1933 0 R 639 0 R 3476 0 R 1114 0 R 2463 0 R 3945 0 R]
+<< /Kids [638 0 R 3548 0 R 1933 0 R 639 0 R 3476 0 R 1114 0 R 2463 0 R 3939 0 R]
 >>
 endobj
 28 0 obj
@@ -10013,11 +10013,11 @@ endobj
 << /Type /Font
 /BaseFont /358635+NotoSerif-Bold
 /Subtype /TrueType
-/FontDescriptor 4748 0 R
+/FontDescriptor 4742 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 4750 0 R
-/ToUnicode 4749 0 R
+/Widths 4744 0 R
+/ToUnicode 4743 0 R
 >>
 endobj
 30 0 obj
@@ -10057,11 +10057,11 @@ endobj
 << /Type /Font
 /BaseFont /260f03+NotoSerif-Italic
 /Subtype /TrueType
-/FontDescriptor 4752 0 R
+/FontDescriptor 4746 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 4754 0 R
-/ToUnicode 4753 0 R
+/Widths 4748 0 R
+/ToUnicode 4747 0 R
 >>
 endobj
 34 0 obj
@@ -10079,11 +10079,11 @@ endobj
 << /Type /Font
 /BaseFont /c7d210+mplus1mn-regular
 /Subtype /TrueType
-/FontDescriptor 4756 0 R
+/FontDescriptor 4750 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 4758 0 R
-/ToUnicode 4757 0 R
+/Widths 4752 0 R
+/ToUnicode 4751 0 R
 >>
 endobj
 36 0 obj
@@ -10109,11 +10109,11 @@ endobj
 << /Type /Font
 /BaseFont /34c70d+NotoSerif
 /Subtype /TrueType
-/FontDescriptor 4760 0 R
+/FontDescriptor 4754 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 4762 0 R
-/ToUnicode 4761 0 R
+/Widths 4756 0 R
+/ToUnicode 4755 0 R
 >>
 endobj
 39 0 obj
@@ -10547,7 +10547,7 @@ endobj
 /F5.1 45 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -10556,11 +10556,11 @@ endobj
 << /Type /Font
 /BaseFont /26ec65+FontAwesome
 /Subtype /TrueType
-/FontDescriptor 4764 0 R
+/FontDescriptor 4758 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 4766 0 R
-/ToUnicode 4765 0 R
+/Widths 4760 0 R
+/ToUnicode 4759 0 R
 >>
 endobj
 46 0 obj
@@ -10618,7 +10618,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -10703,7 +10703,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [52 0 R]
@@ -12276,7 +12276,7 @@ endobj
 /F1.1 38 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [57 0 R 59 0 R]
@@ -13554,7 +13554,7 @@ endobj
 /F1.0 10 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [62 0 R]
@@ -14415,7 +14415,7 @@ endobj
 /Font << /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -15134,7 +15134,7 @@ endobj
 /Font << /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -16010,7 +16010,7 @@ endobj
 /F2.0 29 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [71 0 R 72 0 R 73 0 R 74 0 R]
@@ -16955,7 +16955,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [77 0 R]
@@ -17878,7 +17878,7 @@ endobj
 /F4.0 35 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -19389,7 +19389,7 @@ endobj
 /F4.0 35 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [82 0 R 84 0 R]
@@ -20737,7 +20737,7 @@ endobj
 /F4.0 35 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [88 0 R]
@@ -21811,7 +21811,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -22495,7 +22495,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -23286,7 +23286,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [95 0 R 96 0 R 97 0 R 99 0 R]
@@ -23515,7 +23515,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [103 0 R 104 0 R 105 0 R]
@@ -24379,7 +24379,7 @@ endobj
 /F4.0 35 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [109 0 R 110 0 R]
@@ -24659,7 +24659,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -26139,7 +26139,7 @@ endobj
 /F5.1 45 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [117 0 R 118 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 125 0 R 126 0 R 127 0 R 128 0 R]
@@ -27206,7 +27206,7 @@ endobj
 /F2.0 29 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [131 0 R 133 0 R]
@@ -27944,7 +27944,7 @@ endobj
 /F2.0 29 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [136 0 R 138 0 R 139 0 R 140 0 R]
@@ -30350,7 +30350,7 @@ endobj
 /F2.0 29 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [143 0 R 144 0 R 145 0 R 146 0 R 147 0 R 148 0 R 149 0 R]
@@ -31166,7 +31166,7 @@ endobj
 /F2.0 29 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [155 0 R 156 0 R]
@@ -31177,7 +31177,7 @@ endobj
 endobj
 153 0 obj
 << /Limits [(__anchor-top) (api-as-of-hbase-1-0-0)]
-/Names [(__anchor-top) 25 0 R (__indexterm-7339802) 3441 0 R (__indexterm-7342206) 3443 0 R (__indexterm-7343754) 3445 0 R (__indexterm-7345938) 3446 0 R (acid) 893 0 R (acl) 3253 0 R (add-metric-name-and-function-to-hadoop-compat-interface) 3545 0 R (add-the-implementation-to-both-hadoop-1-and-hadoop-2-compat-modules) 3546 0 R (add.metrics) 3543 0 R (adding-a-new-chapter-to-the-hbase-reference-guide) 3780 0 R (adding.new.node) 3004 0 R (administration) 1331 0 R (administration-2) 1351 0 R (administration-3) 1383 0 R (all-service-rollback) 644 0 R (allow-the-hbase-system-user-in-yarn) 1925 0 R (amazon-ec2) 3818 0 R (api-as-of-hbase-1-0-0) 1430 0 R]
+/Names [(__anchor-top) 25 0 R (__indexterm-7339806) 3441 0 R (__indexterm-7342210) 3443 0 R (__indexterm-7343758) 3445 0 R (__indexterm-7345942) 3446 0 R (acid) 893 0 R (acl) 3253 0 R (add-metric-name-and-function-to-hadoop-compat-interface) 3543 0 R (add-the-implementation-to-both-hadoop-1-and-hadoop-2-compat-modules) 3544 0 R (add.metrics) 3541 0 R (adding-a-new-chapter-to-the-hbase-reference-guide) 3774 0 R (adding.new.node) 3004 0 R (administration) 1331 0 R (administration-2) 1351 0 R (administration-3) 1383 0 R (all-service-rollback) 644 0 R (allow-the-hbase-system-user-in-yarn) 1925 0 R (amazon-ec2) 3812 0 R (api-as-of-hbase-1-0-0) 1430 0 R]
 >>
 endobj
 154 0 obj
@@ -32321,7 +32321,7 @@ endobj
 /F4.0 35 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [161 0 R 162 0 R 164 0 R]
@@ -33121,7 +33121,7 @@ endobj
 /F5.1 45 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [169 0 R 170 0 R 171 0 R 173 0 R 174 0 R 176 0 R 177 0 R]
@@ -34593,7 +34593,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [180 0 R 181 0 R]
@@ -35018,7 +35018,7 @@ endobj
 /F4.0 35 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -35674,7 +35674,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [187 0 R]
@@ -36441,7 +36441,7 @@ endobj
 /F4.0 35 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [192 0 R]
@@ -36972,7 +36972,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -36988,7 +36988,7 @@ endobj
 endobj
 202 0 obj
 << /Limits [(getshortmidpointkey-an-optimization-for-data-index-block) (handling-of-errors-during-log-splitting)]
-/Names [(getshortmidpointkey-an-optimization-for-data-index-block) 3960 0 R (getting.involved) 3274 0 R (getting_started) 48 0 R (git.best.practices) 3547 0 R (git.patch.flow) 3597 0 R (goals) 4052 0 R (guide-for-hbase-committers) 3574 0 R (guidelines-for-deploying-a-coprocessor) 2300 0 R (guidelines-for-reporting-effective-issues) 3291 0 R (hadoop) 137 0 R (hadoop.native.lib) 3878 0 R (hadoop.policy.file) 378 0 R (handling-of-errors-during-log-splitting) 1612 0 R]
+/Names [(getshortmidpointkey-an-optimization-for-data-index-block) 3954 0 R (getting.involved) 3274 0 R (getting_started) 48 0 R (git.best.practices) 3545 0 R (git.patch.flow) 3595 0 R (goals) 4046 0 R (guide-for-hbase-committers) 3572 0 R (guidelines-for-deploying-a-coprocessor) 2300 0 R (guidelines-for-reporting-effective-issues) 3291 0 R (hadoop) 137 0 R (hadoop.native.lib) 3872 0 R (hadoop.policy.file) 378 0 R (handling-of-errors-during-log-splitting) 1612 0 R]
 >>
 endobj
 203 0 obj
@@ -37518,7 +37518,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -38040,7 +38040,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -38675,7 +38675,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -39184,7 +39184,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -39715,7 +39715,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -40294,7 +40294,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [248 0 R 249 0 R]
@@ -40861,7 +40861,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [257 0 R 258 0 R 260 0 R 261 0 R]
@@ -41481,7 +41481,7 @@ endobj
 /F1.0 10 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -42076,7 +42076,7 @@ endobj
 /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [281 0 R 282 0 R]
@@ -42096,7 +42096,7 @@ endobj
 endobj
 280 0 obj
 << /Limits [(hbase.cluster.distributed) (hbase.data.umask.enable)]
-/Names [(hbase.cluster.distributed) 196 0 R (hbase.column.max.version) 429 0 R (hbase.commit.msg.format) 3724 0 R (hbase.coordinated.state.manager.class) 472 0 R (hbase.coprocessor.abortonerror) 394 0 R (hbase.coprocessor.enabled) 387 0 R (hbase.coprocessor.master.classes) 393 0 R (hbase.coprocessor.region.classes) 392 0 R (hbase.coprocessor.user.enabled) 389 0 R (hbase.data.umask) 420 0 R (hbase.data.umask.enable) 419 0 R]
+/Names [(hbase.cluster.distributed) 196 0 R (hbase.column.max.version) 429 0 R (hbase.commit.msg.format) 3718 0 R (hbase.coordinated.state.manager.class) 472 0 R (hbase.coprocessor.abortonerror) 394 0 R (hbase.coprocessor.enabled) 387 0 R (hbase.coprocessor.master.classes) 393 0 R (hbase.coprocessor.region.classes) 392 0 R (hbase.coprocessor.user.enabled) 389 0 R (hbase.data.umask) 420 0 R (hbase.data.umask.enable) 419 0 R]
 >>
 endobj
 281 0 obj
@@ -42642,7 +42642,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -43137,7 +43137,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -43709,7 +43709,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -44274,7 +44274,7 @@ endobj
 /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -44879,7 +44879,7 @@ endobj
 /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -45476,7 +45476,7 @@ endobj
 /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -46019,7 +46019,7 @@ endobj
 /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -46530,7 +46530,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -47105,7 +47105,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [345 0 R 349 0 R]
@@ -47153,7 +47153,7 @@ endobj
 endobj
 352 0 obj
 << /Limits [(quota) (regions.arch)]
-/Names [(quota) 3109 0 R (read-api-and-usage) 1866 0 R (read-hbase-shell-commands-from-a-command-file) 742 0 R (reading-filtering-and-sending-edits) 3089 0 R (reading_cells_with_labels) 1360 0 R (recommended.configurations.hdfs) 541 0 R (recommended_configurations) 536 0 R (recommended_configurations.zk) 537 0 R (region-overlap-repairs) 3836 0 R (region-replication-for-meta-table-s-region) 1844 0 R (regions.arch) 1642 0 R]
+/Names [(quota) 3109 0 R (read-api-and-usage) 1866 0 R (read-hbase-shell-commands-from-a-command-file) 742 0 R (reading-filtering-and-sending-edits) 3089 0 R (reading_cells_with_labels) 1360 0 R (recommended.configurations.hdfs) 541 0 R (recommended_configurations) 536 0 R (recommended_configurations.zk) 537 0 R (region-overlap-repairs) 3830 0 R (region-replication-for-meta-table-s-region) 1844 0 R (regions.arch) 1642 0 R]
 >>
 endobj
 353 0 obj
@@ -47686,7 +47686,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -48301,7 +48301,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [365 0 R 366 0 R 368 0 R 370 0 R 371 0 R]
@@ -48876,7 +48876,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -49425,7 +49425,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -49972,7 +49972,7 @@ endobj
 /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -50491,7 +50491,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -50516,7 +50516,7 @@ endobj
 endobj
 405 0 obj
 << /Limits [(hbase.zookeeper.property.maxClientCnxns) (hfile.block.index.cacheonwrite)]
-/Names [(hbase.zookeeper.property.maxClientCnxns) 269 0 R (hbase.zookeeper.property.syncLimit) 263 0 R (hbase.zookeeper.quorum) 199 0 R (hbase_apis) 2053 0 R (hbase_default_configurations) 193 0 R (hbase_env) 525 0 R (hbase_metrics) 3009 0 R (hbase_mob) 1880 0 R (hbase_site) 521 0 R (hbase_supported_tested_definitions) 42 0 R (hbck) 2910 0 R (hbck.in.depth) 3828 0 R (health.check) 2906 0 R (hedged.reads) 2520 0 R (hfile) 1699 0 R (hfile-format) 1700 0 R (hfile-format-2) 3929 0 R (hfile.block.bloom.cacheonwrite) 350 0 R (hfile.block.cache.size) 339 0 R (hfile.block.index.cacheonwrite) 340 0 R]
+/Names [(hbase.zookeeper.property.maxClientCnxns) 269 0 R (hbase.zookeeper.property.syncLimit) 263 0 R (hbase.zookeeper.quorum) 199 0 R (hbase_apis) 2053 0 R (hbase_default_configurations) 193 0 R (hbase_env) 525 0 R (hbase_metrics) 3009 0 R (hbase_mob) 1880 0 R (hbase_site) 521 0 R (hbase_supported_tested_definitions) 42 0 R (hbck) 2910 0 R (hbck.in.depth) 3822 0 R (health.check) 2906 0 R (hedged.reads) 2520 0 R (hfile) 1699 0 R (hfile-format) 1700 0 R (hfile-format-2) 3923 0 R (hfile.block.bloom.cacheonwrite) 350 0 R (hfile.block.cache.size) 339 0 R (hfile.block.index.cacheonwrite) 340 0 R]
 >>
 endobj
 406 0 obj
@@ -51010,7 +51010,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -51520,7 +51520,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -51530,7 +51530,7 @@ endobj
 endobj
 417 0 obj
 << /Limits [(hbase.rpc) (hbase.secure.spnego.ui)]
-/Names [(hbase.rpc) 4045 0 R (hbase.rpc.rows.warning.threshold) 504 0 R (hbase.rpc.shortoperation.timeout) 360 0 R (hbase.rpc.timeout) 356 0 R (hbase.rs.cacheblocksonwrite) 355 0 R (hbase.secure.bulkload) 1386 0 R (hbase.secure.configuration) 1226 0 R (hbase.secure.enable) 1390 0 R (hbase.secure.simpleconfiguration) 1268 0 R (hbase.secure.spnego.ui) 1221 0 R]
+/Names [(hbase.rpc) 4039 0 R (hbase.rpc.rows.warning.threshold) 504 0 R (hbase.rpc.shortoperation.timeout) 360 0 R (hbase.rpc.timeout) 356 0 R (hbase.rs.cacheblocksonwrite) 355 0 R (hbase.secure.bulkload) 1386 0 R (hbase.secure.configuration) 1226 0 R (hbase.secure.enable) 1390 0 R (hbase.secure.simpleconfiguration) 1268 0 R (hbase.secure.spnego.ui) 1221 0 R]
 >>
 endobj
 418 0 obj
@@ -52046,7 +52046,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -52607,7 +52607,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -53107,7 +53107,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -53652,7 +53652,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [455 0 R 456 0 R]
@@ -54326,7 +54326,7 @@ endobj
 /F4.0 35 0 R
 /F6.0 466 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [462 0 R 463 0 R]
@@ -54364,11 +54364,11 @@ endobj
 << /Type /Font
 /BaseFont /066905+mplus1mn-bold
 /Subtype /TrueType
-/FontDescriptor 4768 0 R
+/FontDescriptor 4762 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 4770 0 R
-/ToUnicode 4769 0 R
+/Widths 4764 0 R
+/ToUnicode 4763 0 R
 >>
 endobj
 467 0 obj
@@ -54930,7 +54930,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -54943,7 +54943,7 @@ endobj
 endobj
 473 0 obj
 << /Limits [(hbase.defaults.for.version.skip) (hbase.hregion.percolumnfamilyflush.size.lower.bound.min)]
-/Names [(hbase.defaults.for.version.skip) 402 0 R (hbase.dfs.client.read.shortcircuit.buffer.size) 434 0 R (hbase.display.keys) 386 0 R (hbase.dynamic.jars.dir) 450 0 R (hbase.encryption.server) 1374 0 R (hbase.env.sh) 506 0 R (hbase.fix.version.in.jira) 3712 0 R (hbase.history) 4006 0 R (hbase.hregion.majorcompaction) 309 0 R (hbase.hregion.majorcompaction.jitter) 310 0 R (hbase.hregion.max.filesize) 306 0 R (hbase.hregion.memstore.block.multiplier) 304 0 R (hbase.hregion.memstore.flush.size) 299 0 R (hbase.hregion.memstore.mslab.enabled) 305 0 R (hbase.hregion.percolumnfamilyflush.size.lower.bound.min) 302 0 R]
+/Names [(hbase.defaults.for.version.skip) 402 0 R (hbase.dfs.client.read.shortcircuit.buffer.size) 434 0 R (hbase.display.keys) 386 0 R (hbase.dynamic.jars.dir) 450 0 R (hbase.encryption.server) 1374 0 R (hbase.env.sh) 506 0 R (hbase.fix.version.in.jira) 3706 0 R (hbase.history) 4000 0 R (hbase.hregion.majorcompaction) 309 0 R (hbase.hregion.majorcompaction.jitter) 310 0 R (hbase.hregion.max.filesize) 306 0 R (hbase.hregion.memstore.block.multiplier) 304 0 R (hbase.hregion.memstore.flush.size) 299 0 R (hbase.hregion.memstore.mslab.enabled) 305 0 R (hbase.hregion.percolumnfamilyflush.size.lower.bound.min) 302 0 R]
 >>
 endobj
 474 0 obj
@@ -55474,7 +55474,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -55985,7 +55985,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -56488,7 +56488,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -56990,7 +56990,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -58143,7 +58143,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [512 0 R]
@@ -58922,7 +58922,7 @@ endobj
 /F3.0 33 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [515 0 R]
@@ -60379,7 +60379,7 @@ endobj
 /F3.0 33 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -60903,7 +60903,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -61556,7 +61556,7 @@ endobj
 /F4.0 35 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [530 0 R 531 0 R 533 0 R 534 0 R 535 0 R 540 0 R]
@@ -62311,7 +62311,7 @@ endobj
 /F2.0 29 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [546 0 R 549 0 R 552 0 R]
@@ -62350,7 +62350,7 @@ endobj
 endobj
 551 0 obj
 << /Limits [(configuration) (coprocessor-overview)]
-/Names [(configuration) 102 0 R (configuration-2) 3038 0 R (configuration-3) 3799 0 R (configuration-files) 108 0 R (configuration-from-scratch) 3693 0 R (configuration-properties) 1850 0 R (configuring-columns-for-mob) 1885 0 R (configuring-server-wide-behavior-of-bloom-filters) 2424 0 R (configuring-the-rest-server-and-client) 2072 0 R (confirm) 186 0 R (connection-setup) 4057 0 R (constraints) 1030 0 R (contributing-to-documentation-or-other-strings) 3735 0 R (coprocessor-implementation-overview) 2229 0 R (coprocessor-overview) 2226 0 R]
+/Names [(configuration) 102 0 R (configuration-2) 3038 0 R (configuration-3) 3793 0 R (configuration-files) 108 0 R (configuration-from-scratch) 3691 0 R (configuration-properties) 1850 0 R (configuring-columns-for-mob) 1885 0 R (configuring-server-wide-behavior-of-bloom-filters) 2424 0 R (configuring-the-rest-server-and-client) 2072 0 R (confirm) 186 0 R (connection-setup) 4051 0 R (constraints) 1030 0 R (contributing-to-documentation-or-other-strings) 3729 0 R (coprocessor-implementation-overview) 2229 0 R (coprocessor-overview) 2226 0 R]
 >>
 endobj
 552 0 obj
@@ -63212,7 +63212,7 @@ endobj
 /F4.0 35 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [556 0 R]
@@ -64026,7 +64026,7 @@ endobj
 /F5.1 45 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [560 0 R 561 0 R 562 0 R 566 0 R 569 0 R 570 0 R 571 0 R]
@@ -64768,7 +64768,7 @@ endobj
 /F1.1 38 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [575 0 R 576 0 R]
@@ -66200,7 +66200,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [580 0 R 581 0 R]
@@ -66977,7 +66977,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -67678,7 +67678,7 @@ endobj
 /F3.0 33 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -69009,7 +69009,7 @@ endobj
 /F4.0 35 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -70504,7 +70504,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -70670,7 +70670,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -70868,7 +70868,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [596 0 R 597 0 R 598 0 R 599 0 R 600 0 R]
@@ -71622,7 +71622,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [605 0 R]
@@ -72565,7 +72565,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [609 0 R 610 0 R 611 0 R]
@@ -74953,7 +74953,7 @@ endobj
 /F1.1 38 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [615 0 R 616 0 R]
@@ -75838,7 +75838,7 @@ endobj
 /F2.0 29 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [619 0 R]
@@ -76312,7 +76312,7 @@ endobj
 /F4.0 35 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [627 0 R 628 0 R 629 0 R 631 0 R 632 0 R 633 0 R]
@@ -77104,7 +77104,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [641 0 R]
@@ -77115,7 +77115,7 @@ endobj
 endobj
 637 0 obj
 << /Limits [(standalone.over.hdfs) (table)]
-/Names [(standalone.over.hdfs) 165 0 R (standalone_dist) 160 0 R (starting-and-stopping-the-rest-server) 2071 0 R (static-loading) 2263 0 R (static-unloading) 2266 0 R (store) 1693 0 R (store-file-ttl) 1843 0 R (store.file.dir) 1708 0 R (store.memstore) 1694 0 R (storefile-refresher) 1839 0 R (submit_doc_patch_procedure) 3736 0 R (submitting.patches) 3553 0 R (submitting.patches.create) 3558 0 R (submitting.patches.tests) 3564 0 R (supported.datatypes) 982 0 R (table) 801 0 R]
+/Names [(standalone.over.hdfs) 165 0 R (standalone_dist) 160 0 R (starting-and-stopping-the-rest-server) 2071 0 R (static-loading) 2263 0 R (static-unloading) 2266 0 R (store) 1693 0 R (store-file-ttl) 1843 0 R (store.file.dir) 1708 0 R (store.memstore) 1694 0 R (storefile-refresher) 1839 0 R (submit_doc_patch_procedure) 3730 0 R (submitting.patches) 3551 0 R (submitting.patches.create) 3556 0 R (submitting.patches.tests) 3562 0 R (supported.datatypes) 982 0 R (table) 801 0 R]
 >>
 endobj
 638 0 obj
@@ -77125,7 +77125,7 @@ endobj
 endobj
 639 0 obj
 << /Limits [(hbase.mob.compaction.threads.max) (hbase.zookeeper.property.initLimit)]
-/Kids [497 0 R 3429 0 R 459 0 R 235 0 R 361 0 R 417 0 R 4046 0 R 447 0 R 264 0 R 3465 0 R 3436 0 R]
+/Kids [497 0 R 3429 0 R 459 0 R 235 0 R 361 0 R 417 0 R 4040 0 R 447 0 R 264 0 R 3465 0 R 3436 0 R]
 >>
 endobj
 640 0 obj
@@ -77789,7 +77789,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -78504,7 +78504,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [649 0 R]
@@ -78971,7 +78971,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -79695,7 +79695,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -80908,7 +80908,7 @@ endobj
 /F3.0 33 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -81699,7 +81699,7 @@ endobj
 /Font << /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [678 0 R]
@@ -82393,7 +82393,7 @@ endobj
 /Font << /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [685 0 R]
@@ -83391,7 +83391,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [696 0 R]
@@ -83419,7 +83419,7 @@ endobj
 endobj
 698 0 obj
 << /Limits [(upgrade2.0.rolling.upgrades) (user-interface)]
-/Names [(upgrade2.0.rolling.upgrades) 710 0 R (upgrade2.0.shaded.client.preferred) 707 0 R (upgrade2.0.shaded.client.preferred) 702 0 R (upgrade2.0.ui.splitmerge.by.row) 689 0 R (upgrade2.0.zkconfig) 683 0 R (upgrade2.0.zkconfig) 661 0 R (upgrading) 595 0 R (upgrading-2) 3793 0 R (use-cases-for-observer-coprocessors) 2241 0 R (user-interface) 1862 0 R]
+/Names [(upgrade2.0.rolling.upgrades) 710 0 R (upgrade2.0.shaded.client.preferred) 707 0 R (upgrade2.0.shaded.client.preferred) 702 0 R (upgrade2.0.ui.splitmerge.by.row) 689 0 R (upgrade2.0.zkconfig) 683 0 R (upgrade2.0.zkconfig) 661 0 R (upgrading) 595 0 R (upgrading-2) 3787 0 R (use-cases-for-observer-coprocessors) 2241 0 R (user-interface) 1862 0 R]
 >>
 endobj
 699 0 obj
@@ -84123,7 +84123,7 @@ endobj
 /F2.0 29 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -84682,7 +84682,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -85050,7 +85050,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [723 0 R 724 0 R 725 0 R]
@@ -85251,7 +85251,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -85489,7 +85489,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [732 0 R]
@@ -86085,7 +86085,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [736 0 R]
@@ -86622,7 +86622,7 @@ endobj
 /F4.0 35 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -86899,7 +86899,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -87383,7 +87383,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -87658,7 +87658,7 @@ endobj
 /F4.0 35 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -88173,7 +88173,7 @@ endobj
 /F4.0 35 0 R
 /F7.0 752 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -88188,11 +88188,11 @@ endobj
 << /Type /Font
 /BaseFont /9a0a42+mplus-1p-regular
 /Subtype /TrueType
-/FontDescriptor 4772 0 R
+/FontDescriptor 4766 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 4774 0 R
-/ToUnicode 4773 0 R
+/Widths 4768 0 R
+/ToUnicode 4767 0 R
 >>
 endobj
 753 0 obj
@@ -88869,7 +88869,7 @@ endobj
 /F1.0 10 0 R
 /F7.0 752 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -89498,7 +89498,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [759 0 R]
@@ -90654,7 +90654,7 @@ endobj
 /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -95914,7 +95914,7 @@ endobj
 /F2.0 29 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -96290,7 +96290,7 @@ endobj
 /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -96905,7 +96905,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -99446,7 +99446,7 @@ endobj
 /F5.1 45 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [779 0 R 780 0 R 781 0 R]
@@ -102465,7 +102465,7 @@ endobj
 /Font << /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -103899,7 +103899,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [788 0 R]
@@ -103910,7 +103910,7 @@ endobj
 endobj
 787 0 obj
 << /Limits [(namespace) (number.of.cfs.card)]
-/Names [(namespace) 791 0 R (namespace_creation) 795 0 R (namespace_quotas) 3118 0 R (namespace_special) 796 0 R (network-saturation-the-winner) 2854 0 R (new-committers) 3575 0 R (new.version.behavior) 869 0 R (no.permanent.state.in.zk) 3716 0 R (node.management) 2980 0 R (non-root-block-index-format-in-version-2) 3952 0 R (normalizer) 3257 0 R (nosuchmethoderror-java-util-concurrent-concurrenthashmap-keyset) 2824 0 R (notes) 4071 0 R (number.of.cfs) 923 0 R (number.of.cfs.card) 925 0 R]
+/Names [(namespace) 791 0 R (namespace_creation) 795 0 R (namespace_quotas) 3118 0 R (namespace_special) 796 0 R (network-saturation-the-winner) 2854 0 R (new-committers) 3573 0 R (new.version.behavior) 869 0 R (no.permanent.state.in.zk) 3710 0 R (node.management) 2980 0 R (non-root-block-index-format-in-version-2) 3946 0 R (normalizer) 3257 0 R (nosuchmethoderror-java-util-concurrent-concurrenthashmap-keyset) 2824 0 R (notes) 4065 0 R (number.of.cfs) 923 0 R (number.of.cfs.card) 925 0 R]
 >>
 endobj
 788 0 obj
@@ -104688,7 +104688,7 @@ endobj
 /F4.0 35 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [792 0 R 793 0 R 794 0 R]
@@ -104890,7 +104890,7 @@ endobj
 /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -104961,7 +104961,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -105065,7 +105065,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -105482,7 +105482,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -105492,7 +105492,7 @@ endobj
 endobj
 808 0 obj
 << /Limits [(changing.compression) (client.external)]
-/Names [(changing.compression) 3904 0 R (changing.rowkeys) 967 0 R (chaos.monkey.properties) 3497 0 R (checking-for-success-or-failure-in-scripts) 739 0 R (choosing-region-servers-to-replicate-to) 3084 0 R (cleaning-logs) 3090 0 R (client) 4058 0 R (client-side-configuration-for-secure-operation) 1232 0 R (client-side-configuration-for-secure-operation-rest-gateway) 1257 0 R (client-side-configuration-for-simple-user-access-operation) 1278 0 R (client-side-configuration-for-simple-user-access-operation-rest-gateway) 1283 0 R (client-side-configuration-for-simple-user-access-operation-thrift-gateway) 1281 0 R (client-side-properties) 1859 0 R (client.connection.pooling) 1438 0 R (client.connections) 1427 0 R (client.external) 1455 0 R]
+/Names [(changing.compression) 3898 0 R (changing.rowkeys) 967 0 R (chaos.monkey.properties) 3497 0 R (checking-for-success-or-failure-in-scripts) 739 0 R (choosing-region-servers-to-replicate-to) 3084 0 R (cleaning-logs) 3090 0 R (client) 4052 0 R (client-side-configuration-for-secure-operation) 1232 0 R (client-side-configuration-for-secure-operation-rest-gateway) 1257 0 R (client-side-configuration-for-simple-user-access-operation) 1278 0 R (client-side-configuration-for-simple-user-access-operation-rest-gateway) 1283 0 R (client-side-configuration-for-simple-user-access-operation-thrift-gateway) 1281 0 R (client-side-properties) 1859 0 R (client.connection.pooling) 1438 0 R (client.connections) 1427 0 R (client.external) 1455 0 R]
 >>
 endobj
 809 0 obj
@@ -105607,7 +105607,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -107794,7 +107794,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [816 0 R 818 0 R 819 0 R 821 0 R 822 0 R 823 0 R 825 0 R 826 0 R]
@@ -107805,7 +107805,7 @@ endobj
 endobj
 815 0 obj
 << /Limits [(dfs.datanode.max.transfer.threads) (dyn_config)]
-/Names [(dfs.datanode.max.transfer.threads) 152 0 R (dfs.domain.socket.path) 431 0 R (dialog) 3603 0 R (direct.memory) 1576 0 R (disable-nagle-for-rpc) 1092 0 R (disable.splitting) 555 0 R (disabling-metrics) 3016 0 R (disabling.blockcache) 567 0 R (discovering.available.metrics) 3017 0 R (distributed) 166 0 R (distributed.log.replay.failure.reasons) 1633 0 R (distributed.log.splitting) 1622 0 R (dm.column.metadata) 886 0 R (dm.sort) 883 0 R (do-not-edit-jira-comments) 3604 0 R (document-the-backup-and-restore-strategy-and-ideally-log-information-about-each-backup) 2007 0 R (documentation) 3410 0 R (draining.servers) 2986 0 R (driver) 2907 0 R (dyn_config) 588 0 R]
+/Names [(dfs.datanode.max.transfer.threads) 152 0 R (dfs.domain.socket.path) 431 0 R (dialog) 3601 0 R (direct.memory) 1576 0 R (disable-nagle-for-rpc) 1092 0 R (disable.splitting) 555 0 R (disabling-metrics) 3016 0 R (disabling.blockcache) 567 0 R (discovering.available.metrics) 3017 0 R (distributed) 166 0 R (distributed.log.replay.failure.reasons) 1633 0 R (distributed.log.splitting) 1622 0 R (dm.column.metadata) 886 0 R (dm.sort) 883 0 R (do-not-edit-jira-comments) 3602 0 R (document-the-backup-and-restore-strategy-and-ideally-log-information-about-each-backup) 2007 0 R (documentation) 3410 0 R (draining.servers) 2986 0 R (driver) 2907 0 R (dyn_config) 588 0 R]
 >>
 endobj
 816 0 obj
@@ -108128,7 +108128,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [830 0 R 831 0 R 832 0 R 833 0 R]
@@ -109143,7 +109143,7 @@ endobj
 /F7.0 752 0 R
 /F7.1 842 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [837 0 R 838 0 R 841 0 R]
@@ -109179,7 +109179,7 @@ endobj
 endobj
 840 0 obj
 << /Limits [(rowcounter) (save-the-dataframe)]
-/Names [(rowcounter) 2952 0 R (rowcounter-example) 1162 0 R (rowkey.design) 928 0 R (rowkey.regionsplits) 968 0 R (rowkey.scope) 966 0 R (rpc) 4054 0 R (rpc.configs) 4074 0 R (rpc.logging) 2591 0 R (rs.failover.details) 3093 0 R (rs_metrics) 3025 0 R (rsgroup) 3242 0 R (run-canary-test-as-daemon-mode) 2893 0 R (run.insitu) 3540 0 R (running-canary-in-a-kerberos-enabled-cluster) 2899 0 R (running-hbck-to-identify-inconsistencies) 3829 0 R (running-multiple-workloads-on-a-single-cluster) 3105 0 R (running-the-shell-in-non-interactive-mode) 731 0 R (save-the-dataframe) 2199 0 R]
+/Names [(rowcounter) 2952 0 R (rowcounter-example) 1162 0 R (rowkey.design) 928 0 R (rowkey.regionsplits) 968 0 R (rowkey.scope) 966 0 R (rpc) 4048 0 R (rpc.configs) 4068 0 R (rpc.logging) 2591 0 R (rs.failover.details) 3093 0 R (rs_metrics) 3025 0 R (rsgroup) 3242 0 R (run-canary-test-as-daemon-mode) 2893 0 R (run.insitu) 3538 0 R (running-canary-in-a-kerberos-enabled-cluster) 2899 0 R (running-hbck-to-identify-inconsistencies) 3823 0 R (running-multiple-workloads-on-a-single-cluster) 3105 0 R (running-the-shell-in-non-interactive-mode) 731 0 R (save-the-dataframe) 2199 0 R]
 >>
 endobj
 841 0 obj
@@ -109197,11 +109197,11 @@ endobj
 << /Type /Font
 /BaseFont /a99fc7+mplus-1p-regular
 /Subtype /TrueType
-/FontDescriptor 4776 0 R
+/FontDescriptor 4770 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 4778 0 R
-/ToUnicode 4777 0 R
+/Widths 4772 0 R
+/ToUnicode 4771 0 R
 >>
 endobj
 843 0 obj
@@ -111069,7 +111069,7 @@ endobj
 /F7.1 842 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [845 0 R 846 0 R 849 0 R 850 0 R 851 0 R 852 0 R]
@@ -115005,7 +115005,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -115987,7 +115987,7 @@ endobj
 /F1.1 38 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [863 0 R 864 0 R 865 0 R 866 0 R 867 0 R 868 0 R]
@@ -116879,7 +116879,7 @@ endobj
 /F2.0 29 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [872 0 R 873 0 R 875 0 R 876 0 R 878 0 R 880 0 R]
@@ -117044,7 +117044,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -117211,7 +117211,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [887 0 R]
@@ -117440,7 +117440,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -117558,7 +117558,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [894 0 R 895 0 R]
@@ -117971,7 +117971,7 @@ endobj
 /F1.0 10 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [899 0 R 900 0 R 901 0 R 902 0 R 903 0 R 904 0 R]
@@ -119446,7 +119446,7 @@ endobj
 /F4.0 35 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [908 0 R 909 0 R 910 0 R 912 0 R]
@@ -119966,7 +119966,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [916 0 R]
@@ -120183,7 +120183,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [920 0 R]
@@ -120500,7 +120500,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [924 0 R]
@@ -120916,7 +120916,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -121645,7 +121645,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -122578,7 +122578,7 @@ endobj
 /F4.0 35 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [934 0 R 935 0 R 936 0 R 937 0 R 939 0 R 940 0 R 941 0 R 942 0 R 943 0 R 945 0 R 946 0 R]
@@ -123203,7 +123203,7 @@ endobj
 /F2.0 29 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [949 0 R 950 0 R 951 0 R 953 0 R 955 0 R]
@@ -126784,7 +126784,7 @@ endobj
 /F5.1 45 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [961 0 R 962 0 R]
@@ -127502,7 +127502,7 @@ endobj
 /F2.0 29 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [965 0 R]
@@ -131274,7 +131274,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [971 0 R]
@@ -131747,7 +131747,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [976 0 R 977 0 R 979 0 R]
@@ -132127,7 +132127,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [983 0 R 984 0 R 985 0 R 987 0 R]
@@ -132268,7 +132268,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [992 0 R]
@@ -132279,7 +132279,7 @@ endobj
 endobj
 991 0 obj
 << /Limits [(schema.versions) (sect.zookeeper.session.timeout)]
-/Names [(schema.versions) 974 0 R (schema.versions.max) 975 0 R (scopes) 3846 0 R (scripting) 728 0 R (secondary-replica-failover) 1849 0 R (secondary.indexes) 1012 0 R (secondary.indexes.coproc) 1026 0 R (secondary.indexes.dualwrite) 1022 0 R (secondary.indexes.filter) 1016 0 R (secondary.indexes.periodic) 1018 0 R (secondary.indexes.summary) 1024 0 R (sect.zookeeper.session.timeout) 538 0 R]
+/Names [(schema.versions) 974 0 R (schema.versions.max) 975 0 R (scopes) 3840 0 R (scripting) 728 0 R (secondary-replica-failover) 1849 0 R (secondary.indexes) 1012 0 R (secondary.indexes.coproc) 1026 0 R (secondary.indexes.dualwrite) 1022 0 R (secondary.indexes.filter) 1016 0 R (secondary.indexes.periodic) 1018 0 R (secondary.indexes.summary) 1024 0 R (sect.zookeeper.session.timeout) 538 0 R]
 >>
 endobj
 992 0 obj
@@ -132705,7 +132705,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [997 0 R 998 0 R]
@@ -132716,7 +132716,7 @@ endobj
 endobj
 996 0 obj
 << /Limits [(tune-hbase-server-rpc-handling) (unit.tests)]
-/Names [(tune-hbase-server-rpc-handling) 1091 0 R (tune-jvm-gc-for-low-collection-latencies) 1098 0 R (tuning-code-callqueue-code-options) 2393 0 R (types-of-coprocessors) 2237 0 R (types-of-observer-coprocessor) 2243 0 R (ulimit) 132 0 R (understanding-access-levels) 1311 0 R (unexpected-filesystem-growth) 2713 0 R (unified-version-2-block-format) 3943 0 R (unit.tests) 3614 0 R]
+/Names [(tune-hbase-server-rpc-handling) 1091 0 R (tune-jvm-gc-for-low-collection-latencies) 1098 0 R (tuning-code-callqueue-code-options) 2393 0 R (types-of-coprocessors) 2237 0 R (types-of-observer-coprocessor) 2243 0 R (ulimit) 132 0 R (understanding-access-levels) 1311 0 R (unexpected-filesystem-growth) 2713 0 R (unified-version-2-block-format) 3937 0 R (unit.tests) 3612 0 R]
 >>
 endobj
 997 0 obj
@@ -133428,7 +133428,7 @@ endobj
 /F7.0 752 0 R
 /F7.1 842 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1002 0 R 1003 0 R]
@@ -139143,7 +139143,7 @@ endobj
 /Font << /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -145089,7 +145089,7 @@ endobj
 /Font << /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -146175,7 +146175,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -146861,7 +146861,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1013 0 R 1014 0 R 1015 0 R 1017 0 R 1019 0 R]
@@ -147166,7 +147166,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1023 0 R 1025 0 R 1027 0 R]
@@ -147374,7 +147374,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1031 0 R]
@@ -148170,7 +148170,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1035 0 R 1038 0 R]
@@ -149148,7 +149148,7 @@ endobj
 /F5.1 45 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1043 0 R 1044 0 R]
@@ -149828,7 +149828,7 @@ endobj
 /F4.0 35 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1048 0 R 1050 0 R 1051 0 R 1052 0 R]
@@ -150581,7 +150581,7 @@ endobj
 /F3.0 33 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1056 0 R]
@@ -151217,7 +151217,7 @@ endobj
 /F2.0 29 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1063 0 R]
@@ -152021,7 +152021,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1067 0 R]
@@ -152584,7 +152584,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1072 0 R]
@@ -154143,7 +154143,7 @@ endobj
 /F4.0 35 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1079 0 R]
@@ -154887,7 +154887,7 @@ endobj
 /F2.0 29 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1083 0 R 1084 0 R 1085 0 R]
@@ -155055,7 +155055,7 @@ endobj
 /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
 /Font << /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -156201,7 +156201,7 @@ endobj
 /F4.0 35 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -157302,7 +157302,7 @@ endobj
 /F1.1 38 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -157321,7 +157321,7 @@ endobj
 endobj
 1100 0 obj
 << /Limits [(others) (perf.general)]
-/Names [(others) 2207 0 R (output) 3042 0 R (owner) 3720 0 R (package) 3335 0 R (page-allocation-failure) 2818 0 R (passing-vm-options-to-the-shell) 747 0 R (passwordless.ssh.quickstart) 85 0 R (patchplusonepolicy) 3708 0 R (perf.99th.percentile) 2365 0 R (perf.batch.loading) 2449 0 R (perf.casestudy) 2570 0 R (perf.compactions.and.splits) 2366 0 R (perf.compression) 2434 0 R (perf.compression.however) 2437 0 R (perf.configurations) 2363 0 R (perf.deleting) 2529 0 R (perf.deleting.queue) 2530 0 R (perf.deleting.rpc) 2534 0 R (perf.ec2) 2562 0 R (perf.general) 2444 0 R]
+/Names [(others) 2207 0 R (output) 3042 0 R (package) 3335 0 R (page-allocation-failure) 2818 0 R (passing-vm-options-to-the-shell) 747 0 R (passwordless.ssh.quickstart) 85 0 R (perf.99th.percentile) 2365 0 R (perf.batch.loading) 2449 0 R (perf.casestudy) 2570 0 R (perf.compactions.and.splits) 2366 0 R (perf.compression) 2434 0 R (perf.compression.however) 2437 0 R (perf.configurations) 2363 0 R (perf.deleting) 2529 0 R (perf.deleting.queue) 2530 0 R (perf.deleting.rpc) 2534 0 R (perf.ec2) 2562 0 R (perf.general) 2444 0 R]
 >>
 endobj
 1101 0 obj
@@ -157490,7 +157490,7 @@ endobj
 /Font << /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -158327,7 +158327,7 @@ endobj
 /F1.1 38 0 R
 /F7.0 752 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1109 0 R]
@@ -158875,7 +158875,7 @@ endobj
 /F4.0 35 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1115 0 R 1116 0 R 1117 0 R 1118 0 R 1119 0 R 1120 0 R]
@@ -158891,7 +158891,7 @@ endobj
 endobj
 1114 0 obj
 << /Limits [(namespace) (schema.updates)]
-/Kids [787 0 R 3143 0 R 3206 0 R 1789 0 R 3165 0 R 2975 0 R 1100 0 R 2462 0 R 2498 0 R 2367 0 R 2475 0 R 2326 0 R 352 0 R 3110 0 R 1536 0 R 4063 0 R 2998 0 R 840 0 R 2953 0 R 1062 0 R]
+/Kids [787 0 R 3143 0 R 3206 0 R 1789 0 R 3165 0 R 2975 0 R 1100 0 R 2462 0 R 2498 0 R 2367 0 R 2475 0 R 2326 0 R 352 0 R 3110 0 R 1536 0 R 4057 0 R 2998 0 R 840 0 R 2953 0 R 1062 0 R]
 >>
 endobj
 1115 0 obj
@@ -159965,7 +159965,7 @@ endobj
 /F3.0 33 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1124 0 R]
@@ -160592,7 +160592,7 @@ endobj
 /Font << /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -160922,7 +160922,7 @@ endobj
 /F4.0 35 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -161675,7 +161675,7 @@ endobj
 /Font << /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1131 0 R 1132 0 R]
@@ -162113,7 +162113,7 @@ endobj
 /Font << /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1135 0 R]
@@ -162641,7 +162641,7 @@ endobj
 /F4.0 35 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1139 0 R 1140 0 R]
@@ -162955,7 +162955,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -163707,7 +163707,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1147 0 R 1148 0 R 1149 0 R 1150 0 R 1151 0 R 1152 0 R 1153 0 R 1154 0 R 1155 0 R]
@@ -163944,7 +163944,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1159 0 R]
@@ -164253,7 +164253,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1163 0 R 1164 0 R 1165 0 R]
@@ -164505,7 +164505,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1170 0 R 1173 0 R]
@@ -167061,7 +167061,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1178 0 R]
@@ -169318,7 +169318,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1182 0 R]
@@ -171274,7 +171274,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -175275,7 +175275,7 @@ endobj
 /Font << /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -177534,7 +177534,7 @@ endobj
 /F4.0 35 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -180989,7 +180989,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -182596,7 +182596,7 @@ endobj
 /F4.0 35 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -183760,7 +183760,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -183917,7 +183917,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1205 0 R]
@@ -187375,7 +187375,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1209 0 R]
@@ -187730,7 +187730,7 @@ endobj
 /F3.0 33 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1213 0 R 1214 0 R]
@@ -188349,7 +188349,7 @@ endobj
 /F3.0 33 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1218 0 R]
@@ -188939,7 +188939,7 @@ endobj
 /F4.0 35 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -189735,7 +189735,7 @@ endobj
 /Font << /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -190583,7 +190583,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1227 0 R 1228 0 R 1231 0 R 1233 0 R]
@@ -192288,7 +192288,7 @@ endobj
 /F4.0 35 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -193423,7 +193423,7 @@ endobj
 /F2.0 29 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1240 0 R 1242 0 R 1243 0 R 1244 0 R]
@@ -193433,11 +193433,11 @@ endobj
 << /Type /Font
 /BaseFont /294f18+mplus1mn-italic
 /Subtype /TrueType
-/FontDescriptor 4780 0 R
+/FontDescriptor 4774 0 R
 /FirstChar 32
 /LastChar 255
-/Widths 4782 0 R
-/ToUnicode 4781 0 R
+/Widths 4776 0 R
+/ToUnicode 4775 0 R
 >>
 endobj
 1240 0 obj
@@ -194648,7 +194648,7 @@ endobj
 /F2.0 29 0 R
 /F6.0 466 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1247 0 R 1248 0 R 1249 0 R 1250 0 R 1252 0 R 1253 0 R]
@@ -195879,7 +195879,7 @@ endobj
 /F3.0 33 0 R
 /F8.0 1239 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1256 0 R 1258 0 R 1259 0 R]
@@ -196905,7 +196905,7 @@ endobj
 /F3.0 33 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1262 0 R]
@@ -197830,7 +197830,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -198191,7 +198191,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1269 0 R 1270 0 R 1272 0 R 1273 0 R]
@@ -199342,7 +199342,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -200364,7 +200364,7 @@ endobj
 /F1.0 10 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1282 0 R 1284 0 R]
@@ -201131,7 +201131,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1290 0 R 1291 0 R 1292 0 R]
@@ -201142,7 +201142,7 @@ endobj
 endobj
 1288 0 obj
 << /Limits [(shell-2) (space-quotas)]
-/Names [(shell-2) 1864 0 R (shell-3) 1867 0 R (shell-debug-switch) 767 0 R (shell-tricks) 750 0 R (shell_exercises) 63 0 R (simple-versus-secure-access) 1271 0 R (slack) 3281 0 R (slowness-due-to-high-processor-usage) 2853 0 R (snappy.compression.installation) 3897 0 R (snapshot-errors-due-to-reverse-dns) 2757 0 R (snapshots_azure) 3179 0 R (snapshots_s3) 3171 0 R (space-quotas) 3125 0 R]
+/Names [(shell-2) 1864 0 R (shell-3) 1867 0 R (shell-debug-switch) 767 0 R (shell-tricks) 750 0 R (shell_exercises) 63 0 R (simple-versus-secure-access) 1271 0 R (slack) 3281 0 R (slowness-due-to-high-processor-usage) 2853 0 R (snappy.compression.installation) 3891 0 R (snapshot-errors-due-to-reverse-dns) 2757 0 R (snapshots_azure) 3179 0 R (snapshots_s3) 3171 0 R (space-quotas) 3125 0 R]
 >>
 endobj
 1289 0 obj
@@ -201474,7 +201474,7 @@ endobj
 /F4.0 35 0 R
 /F7.0 752 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1296 0 R]
@@ -202337,7 +202337,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1300 0 R 1302 0 R 1303 0 R]
@@ -203057,7 +203057,7 @@ endobj
 /F4.0 35 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1308 0 R]
@@ -204275,7 +204275,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -206004,7 +206004,7 @@ endobj
 /F4.0 35 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -206978,7 +206978,7 @@ endobj
 /F3.0 33 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1318 0 R 1320 0 R 1322 0 R 1323 0 R 1324 0 R]
@@ -207822,7 +207822,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -209017,7 +209017,7 @@ endobj
 /Font << /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -210054,7 +210054,7 @@ endobj
 /F2.0 29 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -210776,7 +210776,7 @@ endobj
 /F1.1 38 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -211134,7 +211134,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -214367,7 +214367,7 @@ endobj
 /F4.0 35 0 R
 /F7.0 752 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -217245,7 +217245,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -220104,7 +220104,7 @@ endobj
 /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -221198,7 +221198,7 @@ endobj
 /F5.1 45 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1345 0 R 1346 0 R]
@@ -222035,7 +222035,7 @@ endobj
 /F4.0 35 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1350 0 R]
@@ -224052,7 +224052,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -225703,7 +225703,7 @@ endobj
 /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -227070,7 +227070,7 @@ endobj
 /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -229976,7 +229976,7 @@ endobj
 /F4.0 35 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1361 0 R 1362 0 R]
@@ -232857,7 +232857,7 @@ endobj
 /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1367 0 R 1368 0 R 1369 0 R]
@@ -232868,7 +232868,7 @@ endobj
 endobj
 1366 0 obj
 << /Limits [(hfile.blocks) (how-it-works)]
-/Names [(hfile.blocks) 1710 0 R (hfile.format.version) 348 0 R (hfile.index.block.max.size) 341 0 R (hfile_tool) 1707 0 R (hfile_tool2) 2912 0 R (hfilev1) 3930 0 R (hfilev1.overview) 3931 0 R (hfilev2) 3935 0 R (hfilev2.overview) 3939 0 R (hfilev3) 3963 0 R (hfilev3.datablock) 3974 0 R (hfilev3.fixedtrailer) 3979 0 R (hfilev3.motivation) 3964 0 R (hfilev3.overview) 3969 0 R (hlog_tool) 2915 0 R (hlog_tool.prettyprint) 2917 0 R (hlog_tool.prettyprint) 700 0 R (hotspotting) 929 0 R (how-eofexceptions-are-treated-when-splitting-a-crashed-regionserver-s-wals) 1617 0 R (how-it-works) 1310 0 R]
+/Names [(hfile.blocks) 1710 0 R (hfile.format.version) 348 0 R (hfile.index.block.max.size) 341 0 R (hfile_tool) 1707 0 R (hfile_tool2) 2912 0 R (hfilev1) 3924 0 R (hfilev1.overview) 3925 0 R (hfilev2) 3929 0 R (hfilev2.overview) 3933 0 R (hfilev3) 3957 0 R (hfilev3.datablock) 3968 0 R (hfilev3.fixedtrailer) 3973 0 R (hfilev3.motivation) 3958 0 R (hfilev3.overview) 3963 0 R (hlog_tool) 2915 0 R (hlog_tool.prettyprint) 2917 0 R (hlog_tool.prettyprint) 700 0 R (hotspotting) 929 0 R (how-eofexceptions-are-treated-when-splitting-a-crashed-regionserver-s-wals) 1617 0 R (how-it-works) 1310 0 R]
 >>
 endobj
 1367 0 obj
@@ -233822,7 +233822,7 @@ endobj
 /F2.0 29 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1373 0 R]
@@ -234644,7 +234644,7 @@ endobj
 /F4.0 35 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -235869,7 +235869,7 @@ endobj
 /F3.0 33 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -236730,7 +236730,7 @@ endobj
 /F2.0 29 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -237578,7 +237578,7 @@ endobj
 /F3.0 33 0 R
 /F7.0 752 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1387 0 R]
@@ -238269,7 +238269,7 @@ endobj
 /F1.0 10 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1391 0 R]
@@ -239450,7 +239450,7 @@ endobj
 /F3.0 33 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -240761,7 +240761,7 @@ endobj
 /Font << /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -241932,7 +241932,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -241992,7 +241992,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -242655,7 +242655,7 @@ endobj
 /Font << /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 >>
@@ -242665,7 +242665,7 @@ endobj
 endobj
 1405 0 obj
 << /Limits [(basic-spark) (bloom.filters.when)]
-/Names [(basic-spark) 2173 0 R (basic.prerequisites) 658 0 R (basic.prerequisites) 115 0 R (best-practice) 3249 0 R (big.cluster.config) 532 0 R (big_memory) 547 0 R (block-cache-monitoring) 3044 0 R (block-index-format-in-version-1) 3934 0 R (block-index-in-version-2) 3948 0 R (block.cache) 1539 0 R (block.cache.design) 1551 0 R (block.cache.usage) 1554 0 R (blockcache.prefetch) 2372 0 R (bloom-filters-in-version-2) 3955 0 R (bloom.filters.when) 2418 0 R]
+/Names [(basic-spark) 2173 0 R (basic.prerequisites) 658 0 R (basic.prerequisites) 115 0 R (best-practice) 3249 0 R (big.cluster.config) 532 0 R (big_memory) 547 0 R (block-cache-monitoring) 3044 0 R (block-index-format-in-version-1) 3928 0 R (block-index-in-version-2) 3942 0 R (block.cache) 1539 0 R (block.cache.design) 1551 0 R (block.cache.usage) 1554 0 R (blockcache.prefetch) 2372 0 R (bloom-filters-in-version-2) 3949 0 R (bloom.filters.when) 2418 0 R]
 >>
 endobj
 1406 0 obj
@@ -242979,7 +242979,7 @@ endobj
 /Font << /F1.0 10 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1411 0 R 1412 0 R]
@@ -243866,7 +243866,7 @@ endobj
 /F3.0 33 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1417 0 R 1418 0 R 1420 0 R]
@@ -245465,7 +245465,7 @@ endobj
 /F4.0 35 0 R
 /F3.0 33 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1424 0 R 1425 0 R 1426 0 R 1428 0 R 1429 0 R 1431 0 R 1433 0 R 1434 0 R]
@@ -247659,7 +247659,7 @@ endobj
 /F3.0 33 0 R
 /F5.1 45 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1437 0 R 1439 0 R 1440 0 R 1442 0 R 1443 0 R 1444 0 R 1445 0 R 1446 0 R 1447 0 R]
@@ -249163,7 +249163,7 @@ endobj
 /F4.0 35 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 >>
@@ -249581,7 +249581,7 @@ endobj
 /F4.0 35 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1457 0 R]
@@ -251289,7 +251289,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1461 0 R 1462 0 R 1463 0 R 1466 0 R 1469 0 R 1470 0 R]
@@ -253469,7 +253469,7 @@ endobj
 /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1475 0 R]
@@ -254994,7 +254994,7 @@ endobj
 /F1.0 10 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1479 0 R 1480 0 R 1482 0 R 1485 0 R 1487 0 R 1490 0 R]
@@ -257396,7 +257396,7 @@ endobj
 /F2.0 29 0 R
 /F4.0 35 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1494 0 R 1496 0 R 1498 0 R]
@@ -262133,7 +262133,7 @@ endobj
 /F2.0 29 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1502 0 R]
@@ -262333,7 +262333,7 @@ endobj
 /Font << /F1.0 10 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1507 0 R 1510 0 R]
@@ -263169,7 +263169,7 @@ endobj
 /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1514 0 R 1515 0 R 1518 0 R 1522 0 R 1523 0 R 1525 0 R]
@@ -263879,7 +263879,7 @@ endobj
 /F4.0 35 0 R
 /F1.0 10 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1529 0 R 1538 0 R]
@@ -263916,7 +263916,7 @@ endobj
 endobj
 1536 0 obj
 << /Limits [(regionserver.arch.processes.majorcompact) (releasing)]
-/Names [(regionserver.arch.processes.majorcompact) 1533 0 R (regionserver.arch.processes.memstore) 1534 0 R (regionserver_sizing_rules_of_thumb) 919 0 R (regionserver_split_process_image) 1593 0 R (regionserver_splitting_implementation) 1585 0 R (regionservers) 524 0 R (regionsplitter) 2902 0 R (reject) 3582 0 R (release-managers) 3507 0 R (releasing) 3358 0 R]
+/Names [(regionserver.arch.processes.majorcompact) 1533 0 R (regionserver.arch.processes.memstore) 1534 0 R (regionserver_sizing_rules_of_thumb) 919 0 R (regionserver_split_process_image) 1593 0 R (regionserver_splitting_implementation) 1585 0 R (regionservers) 524 0 R (regionsplitter) 2902 0 R (reject) 3578 0 R (release-managers) 3714 0 R (releasing) 3358 0 R]
 >>
 endobj
 1537 0 obj
@@ -264848,7 +264848,7 @@ endobj
 /F4.0 35 0 R
 /F1.1 38 0 R
 >>
-/XObject << /Stamp1 4517 0 R
+/XObject << /Stamp1 4511 0 R
 >>
 >>
 /Annots [1543 0 R 1544 0 R 1545 0 R 1547 0 R 1548 0 R 1549 0 R 1550 0 R]
@@ -266390,7 +266390,7 @@ endobj
 /F7.1 842 0 R
 /F2.0 29 0 R
 >>
-/XObject << /Stamp2 4518 0 R
+/XObject << /Stamp2 4512 0 R
 >>
 >>
 /Annots [1555 0 R 1556 0 R]
@@ -267214,7 +267

<TRUNCATED>

[07/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html
index 6007f27..4ce6735 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html
@@ -65,716 +65,716 @@
 <span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Table;<a name="line.57"></a>
 <span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.58"></a>
 <span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsResponse;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.slf4j.Logger;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.slf4j.LoggerFactory;<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.79"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsResponse;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.slf4j.Logger;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.slf4j.LoggerFactory;<a name="line.79"></a>
 <span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>/**<a name="line.81"></a>
-<span class="sourceLineNo">082</span> * &lt;p&gt;<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * Read/write operations on region and assignment information store in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * &lt;/p&gt;<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * &lt;p&gt;<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * Some of the methods of this class take ZooKeeperWatcher as a param. The only reason for this is<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * because when used on client-side (like from HBaseAdmin), we want to use short-living connection<a name="line.87"></a>
-<span class="sourceLineNo">088</span> * (opened before each operation, closed right after), while when used on HM or HRS (like in<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * AssignmentManager) we want permanent connection.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * &lt;/p&gt;<a name="line.90"></a>
-<span class="sourceLineNo">091</span> * &lt;p&gt;<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * HBASE-10070 adds a replicaId to HRI, meaning more than one HRI can be defined for the same table<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * range (table, startKey, endKey). For every range, there will be at least one HRI defined which is<a name="line.93"></a>
-<span class="sourceLineNo">094</span> * called default replica.<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * &lt;/p&gt;<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * &lt;p&gt;<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * Meta layout (as of 0.98 + HBASE-10070) is like:<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * &lt;pre&gt;<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * For each table there is single row in column family 'table' formatted:<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * &amp;lt;tableName&amp;gt; including namespace and columns are:<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * table: state             =&gt; contains table state<a name="line.102"></a>
-<span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * For each table range, there is a single row, formatted like:<a name="line.104"></a>
-<span class="sourceLineNo">105</span> * &amp;lt;tableName&amp;gt;,&amp;lt;startKey&amp;gt;,&amp;lt;regionId&amp;gt;,&amp;lt;encodedRegionName&amp;gt;.<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * This row corresponds to the regionName of the default region replica.<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Columns are:<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * info:regioninfo         =&gt; contains serialized HRI for the default region replica<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * info:server             =&gt; contains hostname:port (in string form) for the server hosting<a name="line.109"></a>
-<span class="sourceLineNo">110</span> *                            the default regionInfo replica<a name="line.110"></a>
-<span class="sourceLineNo">111</span> * info:server_&amp;lt;replicaId&amp;gt =&gt; contains hostname:port (in string form) for the server hosting<a name="line.111"></a>
-<span class="sourceLineNo">112</span> *                                 the regionInfo replica with replicaId<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * info:serverstartcode    =&gt; contains server start code (in binary long form) for the server<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *                            hosting the default regionInfo replica<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * info:serverstartcode_&amp;lt;replicaId&amp;gt =&gt; contains server start code (in binary long form) for<a name="line.115"></a>
-<span class="sourceLineNo">116</span> *                                          the server hosting the regionInfo replica with<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *                                          replicaId<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * info:seqnumDuringOpen   =&gt; contains seqNum (in binary long form) for the region at the time<a name="line.118"></a>
-<span class="sourceLineNo">119</span> *                             the server opened the region with default replicaId<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * info:seqnumDuringOpen_&amp;lt;replicaId&amp;gt =&gt; contains seqNum (in binary long form) for the region<a name="line.120"></a>
-<span class="sourceLineNo">121</span> *                                           at the time the server opened the region with<a name="line.121"></a>
-<span class="sourceLineNo">122</span> *                                           replicaId<a name="line.122"></a>
-<span class="sourceLineNo">123</span> * info:splitA             =&gt; contains a serialized HRI for the first daughter region if the<a name="line.123"></a>
-<span class="sourceLineNo">124</span> *                             region is split<a name="line.124"></a>
-<span class="sourceLineNo">125</span> * info:splitB             =&gt; contains a serialized HRI for the second daughter region if the<a name="line.125"></a>
+<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>/**<a name="line.83"></a>
+<span class="sourceLineNo">084</span> * &lt;p&gt;<a name="line.84"></a>
+<span class="sourceLineNo">085</span> * Read/write operations on region and assignment information store in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * &lt;/p&gt;<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * &lt;p&gt;<a name="line.87"></a>
+<span class="sourceLineNo">088</span> * Some of the methods of this class take ZooKeeperWatcher as a param. The only reason for this is<a name="line.88"></a>
+<span class="sourceLineNo">089</span> * because when used on client-side (like from HBaseAdmin), we want to use short-living connection<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * (opened before each operation, closed right after), while when used on HM or HRS (like in<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * AssignmentManager) we want permanent connection.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * &lt;/p&gt;<a name="line.92"></a>
+<span class="sourceLineNo">093</span> * &lt;p&gt;<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * HBASE-10070 adds a replicaId to HRI, meaning more than one HRI can be defined for the same table<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * range (table, startKey, endKey). For every range, there will be at least one HRI defined which is<a name="line.95"></a>
+<span class="sourceLineNo">096</span> * called default replica.<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * &lt;/p&gt;<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * &lt;p&gt;<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * Meta layout (as of 0.98 + HBASE-10070) is like:<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * &lt;pre&gt;<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * For each table there is single row in column family 'table' formatted:<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * &amp;lt;tableName&amp;gt; including namespace and columns are:<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * table: state             =&gt; contains table state<a name="line.104"></a>
+<span class="sourceLineNo">105</span> *<a name="line.105"></a>
+<span class="sourceLineNo">106</span> * For each table range, there is a single row, formatted like:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * &amp;lt;tableName&amp;gt;,&amp;lt;startKey&amp;gt;,&amp;lt;regionId&amp;gt;,&amp;lt;encodedRegionName&amp;gt;.<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * This row corresponds to the regionName of the default region replica.<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * Columns are:<a name="line.109"></a>
+<span class="sourceLineNo">110</span> * info:regioninfo         =&gt; contains serialized HRI for the default region replica<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * info:server             =&gt; contains hostname:port (in string form) for the server hosting<a name="line.111"></a>
+<span class="sourceLineNo">112</span> *                            the default regionInfo replica<a name="line.112"></a>
+<span class="sourceLineNo">113</span> * info:server_&amp;lt;replicaId&amp;gt =&gt; contains hostname:port (in string form) for the server hosting<a name="line.113"></a>
+<span class="sourceLineNo">114</span> *                                 the regionInfo replica with replicaId<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * info:serverstartcode    =&gt; contains server start code (in binary long form) for the server<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *                            hosting the default regionInfo replica<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * info:serverstartcode_&amp;lt;replicaId&amp;gt =&gt; contains server start code (in binary long form) for<a name="line.117"></a>
+<span class="sourceLineNo">118</span> *                                          the server hosting the regionInfo replica with<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *                                          replicaId<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * info:seqnumDuringOpen   =&gt; contains seqNum (in binary long form) for the region at the time<a name="line.120"></a>
+<span class="sourceLineNo">121</span> *                             the server opened the region with default replicaId<a name="line.121"></a>
+<span class="sourceLineNo">122</span> * info:seqnumDuringOpen_&amp;lt;replicaId&amp;gt =&gt; contains seqNum (in binary long form) for the region<a name="line.122"></a>
+<span class="sourceLineNo">123</span> *                                           at the time the server opened the region with<a name="line.123"></a>
+<span class="sourceLineNo">124</span> *                                           replicaId<a name="line.124"></a>
+<span class="sourceLineNo">125</span> * info:splitA             =&gt; contains a serialized HRI for the first daughter region if the<a name="line.125"></a>
 <span class="sourceLineNo">126</span> *                             region is split<a name="line.126"></a>
-<span class="sourceLineNo">127</span> * info:mergeA             =&gt; contains a serialized HRI for the first parent region if the<a name="line.127"></a>
-<span class="sourceLineNo">128</span> *                             region is the result of a merge<a name="line.128"></a>
-<span class="sourceLineNo">129</span> * info:mergeB             =&gt; contains a serialized HRI for the second parent region if the<a name="line.129"></a>
+<span class="sourceLineNo">127</span> * info:splitB             =&gt; contains a serialized HRI for the second daughter region if the<a name="line.127"></a>
+<span class="sourceLineNo">128</span> *                             region is split<a name="line.128"></a>
+<span class="sourceLineNo">129</span> * info:mergeA             =&gt; contains a serialized HRI for the first parent region if the<a name="line.129"></a>
 <span class="sourceLineNo">130</span> *                             region is the result of a merge<a name="line.130"></a>
-<span class="sourceLineNo">131</span> * &lt;/pre&gt;<a name="line.131"></a>
-<span class="sourceLineNo">132</span> * &lt;/p&gt;<a name="line.132"></a>
-<span class="sourceLineNo">133</span> * &lt;p&gt;<a name="line.133"></a>
-<span class="sourceLineNo">134</span> * The actual layout of meta should be encapsulated inside MetaTableAccessor methods, and should not<a name="line.134"></a>
-<span class="sourceLineNo">135</span> * leak out of it (through Result objects, etc)<a name="line.135"></a>
-<span class="sourceLineNo">136</span> * &lt;/p&gt;<a name="line.136"></a>
-<span class="sourceLineNo">137</span> */<a name="line.137"></a>
-<span class="sourceLineNo">138</span>@InterfaceAudience.Private<a name="line.138"></a>
-<span class="sourceLineNo">139</span>public class MetaTableAccessor {<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static final Logger LOG = LoggerFactory.getLogger(MetaTableAccessor.class);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static final Logger METALOG = LoggerFactory.getLogger("org.apache.hadoop.hbase.META");<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static final byte[] META_REGION_PREFIX;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  static {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    // Copy the prefix from FIRST_META_REGIONINFO into META_REGION_PREFIX.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    // FIRST_META_REGIONINFO == 'hbase:meta,,1'.  META_REGION_PREFIX == 'hbase:meta,'<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    int len = RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName().length - 2;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    META_REGION_PREFIX = new byte [len];<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    System.arraycopy(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName(), 0,<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      META_REGION_PREFIX, 0, len);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>  @VisibleForTesting<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  public static final byte[] REPLICATION_PARENT_QUALIFIER = Bytes.toBytes("parent");<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  private static final byte ESCAPE_BYTE = (byte) 0xFF;<a name="line.157"></a>
+<span class="sourceLineNo">131</span> * info:mergeB             =&gt; contains a serialized HRI for the second parent region if the<a name="line.131"></a>
+<span class="sourceLineNo">132</span> *                             region is the result of a merge<a name="line.132"></a>
+<span class="sourceLineNo">133</span> * &lt;/pre&gt;<a name="line.133"></a>
+<span class="sourceLineNo">134</span> * &lt;/p&gt;<a name="line.134"></a>
+<span class="sourceLineNo">135</span> * &lt;p&gt;<a name="line.135"></a>
+<span class="sourceLineNo">136</span> * The actual layout of meta should be encapsulated inside MetaTableAccessor methods, and should not<a name="line.136"></a>
+<span class="sourceLineNo">137</span> * leak out of it (through Result objects, etc)<a name="line.137"></a>
+<span class="sourceLineNo">138</span> * &lt;/p&gt;<a name="line.138"></a>
+<span class="sourceLineNo">139</span> */<a name="line.139"></a>
+<span class="sourceLineNo">140</span>@InterfaceAudience.Private<a name="line.140"></a>
+<span class="sourceLineNo">141</span>public class MetaTableAccessor {<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static final Logger LOG = LoggerFactory.getLogger(MetaTableAccessor.class);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static final Logger METALOG = LoggerFactory.getLogger("org.apache.hadoop.hbase.META");<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static final byte[] META_REGION_PREFIX;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  static {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    // Copy the prefix from FIRST_META_REGIONINFO into META_REGION_PREFIX.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    // FIRST_META_REGIONINFO == 'hbase:meta,,1'.  META_REGION_PREFIX == 'hbase:meta,'<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    int len = RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName().length - 2;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    META_REGION_PREFIX = new byte [len];<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    System.arraycopy(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName(), 0,<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      META_REGION_PREFIX, 0, len);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  }<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span>  @VisibleForTesting<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  public static final byte[] REPLICATION_PARENT_QUALIFIER = Bytes.toBytes("parent");<a name="line.157"></a>
 <span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  private static final byte SEPARATED_BYTE = 0x00;<a name="line.159"></a>
+<span class="sourceLineNo">159</span>  private static final byte ESCAPE_BYTE = (byte) 0xFF;<a name="line.159"></a>
 <span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  /**<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * Lists all of the table regions currently in META.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * Deprecated, keep there until some test use this.<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * @param connection what we will use<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * @param tableName table to list<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @return Map of all user-space regions to servers<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * @deprecated use {@link #getTableRegionsAndLocations}, region can have multiple locations<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   */<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  @Deprecated<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  public static NavigableMap&lt;RegionInfo, ServerName&gt; allTableRegions(<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      Connection connection, final TableName tableName) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    final NavigableMap&lt;RegionInfo, ServerName&gt; regions = new TreeMap&lt;&gt;();<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    Visitor visitor = new TableVisitorBase(tableName) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      public boolean visitInternal(Result result) throws IOException {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        RegionLocations locations = getRegionLocations(result);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>        if (locations == null) return true;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        for (HRegionLocation loc : locations.getRegionLocations()) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          if (loc != null) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>            RegionInfo regionInfo = loc.getRegionInfo();<a name="line.180"></a>
-<span class="sourceLineNo">181</span>            regions.put(regionInfo, loc.getServerName());<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>        return true;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    };<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    scanMetaForTableRegions(connection, visitor, tableName);<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    return regions;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>  @InterfaceAudience.Private<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  public enum QueryType {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    ALL(HConstants.TABLE_FAMILY, HConstants.CATALOG_FAMILY),<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    REGION(HConstants.CATALOG_FAMILY),<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    TABLE(HConstants.TABLE_FAMILY),<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    REPLICATION(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>    private final byte[][] families;<a name="line.198"></a>
+<span class="sourceLineNo">161</span>  private static final byte SEPARATED_BYTE = 0x00;<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  /**<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   * Lists all of the table regions currently in META.<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * Deprecated, keep there until some test use this.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * @param connection what we will use<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * @param tableName table to list<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * @return Map of all user-space regions to servers<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * @deprecated use {@link #getTableRegionsAndLocations}, region can have multiple locations<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  @Deprecated<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public static NavigableMap&lt;RegionInfo, ServerName&gt; allTableRegions(<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      Connection connection, final TableName tableName) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    final NavigableMap&lt;RegionInfo, ServerName&gt; regions = new TreeMap&lt;&gt;();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    Visitor visitor = new TableVisitorBase(tableName) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      @Override<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      public boolean visitInternal(Result result) throws IOException {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        RegionLocations locations = getRegionLocations(result);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        if (locations == null) return true;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        for (HRegionLocation loc : locations.getRegionLocations()) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          if (loc != null) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            RegionInfo regionInfo = loc.getRegionInfo();<a name="line.182"></a>
+<span class="sourceLineNo">183</span>            regions.put(regionInfo, loc.getServerName());<a name="line.183"></a>
+<span class="sourceLineNo">184</span>          }<a name="line.184"></a>
+<span class="sourceLineNo">185</span>        }<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        return true;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    };<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    scanMetaForTableRegions(connection, visitor, tableName);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    return regions;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  @InterfaceAudience.Private<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  public enum QueryType {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    ALL(HConstants.TABLE_FAMILY, HConstants.CATALOG_FAMILY),<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    REGION(HConstants.CATALOG_FAMILY),<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    TABLE(HConstants.TABLE_FAMILY),<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    REPLICATION(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.198"></a>
 <span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>    QueryType(byte[]... families) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      this.families = families;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span>    byte[][] getFamilies() {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return this.families;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private static final Pattern SERVER_COLUMN_PATTERN<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    = Pattern.compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  ////////////////////////<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  // Reading operations //<a name="line.217"></a>
+<span class="sourceLineNo">200</span>    private final byte[][] families;<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    QueryType(byte[]... families) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      this.families = families;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>    byte[][] getFamilies() {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      return this.families;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    }<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  private static final Pattern SERVER_COLUMN_PATTERN<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    = Pattern.compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
 <span class="sourceLineNo">218</span>  ////////////////////////<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>  /**<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   * @param connection connection we're using<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * @param visitor Visitor invoked against each row in regions family.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  public static void fullScanRegions(Connection connection,<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      final Visitor visitor)<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      throws IOException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    scanMeta(connection, null, null, QueryType.REGION, visitor);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  /**<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   * @param connection connection we're using<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public static List&lt;Result&gt; fullScanRegions(Connection connection)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      throws IOException {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    return fullScan(connection, QueryType.REGION);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  /**<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for tables.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   * @param connection connection we're using<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * @param visitor Visitor invoked against each row in tables family.<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  public static void fullScanTables(Connection connection,<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      final Visitor visitor)<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      throws IOException {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    scanMeta(connection, null, null, QueryType.TABLE, visitor);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>  /**<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   * @param connection connection we're using<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   * @param type scanned part of meta<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * @return List of {@link Result}<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  public static List&lt;Result&gt; fullScan(Connection connection, QueryType type)<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    throws IOException {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    CollectAllVisitor v = new CollectAllVisitor();<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    scanMeta(connection, null, null, type, v);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return v.getResults();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>  /**<a name="line.264"></a>
-<span class="sourceLineNo">265</span>   * Callers should call close on the returned {@link Table} instance.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>   * @param connection connection we're using to access Meta<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   * @return An {@link Table} for &lt;code&gt;hbase:meta&lt;/code&gt;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   */<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  public static Table getMetaHTable(final Connection connection)<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  throws IOException {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // We used to pass whole CatalogTracker in here, now we just pass in Connection<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    if (connection == null) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      throw new NullPointerException("No connection");<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    } else if (connection.isClosed()) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      throw new IOException("connection is closed");<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return connection.getTable(TableName.META_TABLE_NAME);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>  /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * @param t Table to use (will be closed when done).<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   * @param g Get to run<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   */<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  private static Result get(final Table t, final Get g) throws IOException {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    if (t == null) return null;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    try {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      return t.get(g);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    } finally {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      t.close();<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    }<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  /**<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * Gets the region info and assignment for the specified region.<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @param connection connection we're using<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * @param regionName Region to lookup.<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   * @return Location and RegionInfo for &lt;code&gt;regionName&lt;/code&gt;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>   * @deprecated use {@link #getRegionLocation(Connection, byte[])} instead<a name="line.298"></a>
-<span class="sourceLineNo">299</span>   */<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  @Deprecated<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  public static Pair&lt;RegionInfo, ServerName&gt; getRegion(Connection connection, byte [] regionName)<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    throws IOException {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    HRegionLocation location = getRegionLocation(connection, regionName);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    return location == null<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      ? null<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      : new Pair&lt;&gt;(location.getRegionInfo(), location.getServerName());<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  /**<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * Returns the HRegionLocation from meta for the given region<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * @param connection connection we're using<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * @param regionName region we're looking for<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * @return HRegionLocation for the given region<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public static HRegionLocation getRegionLocation(Connection connection, byte[] regionName)<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      throws IOException {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    byte[] row = regionName;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    RegionInfo parsedInfo = null;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    try {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      parsedInfo = parseRegionInfoFromRegionName(regionName);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      row = getMetaKeyForRegion(parsedInfo);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    } catch (Exception parseEx) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      // Ignore. This is used with tableName passed as regionName.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    Get get = new Get(row);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    Result r = get(getMetaHTable(connection), get);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    RegionLocations locations = getRegionLocations(r);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    return locations == null ? null<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      : locations.getRegionLocation(parsedInfo == null ? 0 : parsedInfo.getReplicaId());<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  /**<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * Returns the HRegionLocation from meta for the given region<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * @param connection connection we're using<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   * @param regionInfo region information<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * @return HRegionLocation for the given region<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   */<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static HRegionLocation getRegionLocation(Connection connection, RegionInfo regionInfo)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      throws IOException {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    byte[] row = getMetaKeyForRegion(regionInfo);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    Get get = new Get(row);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    Result r = get(getMetaHTable(connection), get);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    return getRegionLocation(r, regionInfo, regionInfo.getReplicaId());<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>  /** Returns the row key to use for this regionInfo */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public static byte[] getMetaKeyForRegion(RegionInfo regionInfo) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    return RegionReplicaUtil.getRegionInfoForDefaultReplica(regionInfo).getRegionName();<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /** Returns an HRI parsed from this regionName. Not all the fields of the HRI<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * is stored in the name, so the returned object should only be used for the fields<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * in the regionName.<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  public static RegionInfo parseRegionInfoFromRegionName(byte[] regionName) throws IOException {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    byte[][] fields = RegionInfo.parseRegionName(regionName);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    long regionId = Long.parseLong(Bytes.toString(fields[2]));<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    int replicaId = fields.length &gt; 3 ? Integer.parseInt(Bytes.toString(fields[3]), 16) : 0;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    return RegionInfoBuilder.newBuilder(TableName.valueOf(fields[0]))<a name="line.361"></a>
-<span class="sourceLineNo">362</span>              .setStartKey(fields[1])<a name="line.362"></a>
-<span class="sourceLineNo">363</span>              .setEndKey(fields[2])<a name="line.363"></a>
-<span class="sourceLineNo">364</span>              .setSplit(false)<a name="line.364"></a>
-<span class="sourceLineNo">365</span>              .setRegionId(regionId)<a name="line.365"></a>
-<span class="sourceLineNo">366</span>              .setReplicaId(replicaId)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>              .build();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * Gets the result in hbase:meta for the specified region.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * @param connection connection we're using<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * @param regionName region we're looking for<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * @return result of the specified region<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   */<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  public static Result getRegionResult(Connection connection,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      byte[] regionName) throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    Get get = new Get(regionName);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    return get(getMetaHTable(connection), get);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span>  /**<a name="line.383"></a>
-<span class="sourceLineNo">384</span>   * Get regions from the merge qualifier of the specified merged region<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * @return null if it doesn't contain merge qualifier, else two merge regions<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   */<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Nullable<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public static Pair&lt;RegionInfo, RegionInfo&gt; getRegionsFromMergeQualifier(<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      Connection connection, byte[] regionName) throws IOException {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    Result result = getRegionResult(connection, regionName);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    RegionInfo mergeA = getRegionInfo(result, HConstants.MERGEA_QUALIFIER);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    RegionInfo mergeB = getRegionInfo(result, HConstants.MERGEB_QUALIFIER);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    if (mergeA == null &amp;&amp; mergeB == null) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      return null;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    return new Pair&lt;&gt;(mergeA, mergeB);<a name="line.396"></a>
-<span class="sourceLineNo">397</span> }<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  /**<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * Checks if the specified table exists.  Looks at the hbase:meta table hosted on<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * the specified server.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param connection connection we're using<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param tableName table to check<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @return true if the table exists in meta, false if not<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  public static boolean tableExists(Connection connection,<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      final TableName tableName)<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  throws IOException {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    // Catalog tables always exist.<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return tableName.equals(TableName.META_TABLE_NAME)<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        || getTableState(connection, tableName) != null;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  /**<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * Lists all of the regions currently in META.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   *<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param connection to connect with<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param excludeOfflinedSplitParents False if we are to include offlined/splitparents regions,<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   *                                    true and we'll leave out offlined regions from returned list<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * @return List of all user-space regions.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   */<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  @VisibleForTesting<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  public static List&lt;RegionInfo&gt; getAllRegions(Connection connection,<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      boolean excludeOfflinedSplitParents)<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      throws IOException {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result;<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>    result = getTableRegionsAndLocations(connection, null,<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        excludeOfflinedSplitParents);<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>    return getListOfRegionInfos(result);<a name="line.431"></a>
+<span class="sourceLineNo">219</span>  // Reading operations //<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  ////////////////////////<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>  /**<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * @param connection connection we're using<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * @param visitor Visitor invoked against each row in regions family.<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   */<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public static void fullScanRegions(Connection connection,<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      final Visitor visitor)<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      throws IOException {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    scanMeta(connection, null, null, QueryType.REGION, visitor);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>  }<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>  /**<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @param connection connection we're using<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  public static List&lt;Result&gt; fullScanRegions(Connection connection)<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      throws IOException {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return fullScan(connection, QueryType.REGION);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  /**<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for tables.<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * @param connection connection we're using<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * @param visitor Visitor invoked against each row in tables family.<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   */<a name="line.246"></a>
+<span class="sourceLineNo">247</span>  public static void fullScanTables(Connection connection,<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      final Visitor visitor)<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    scanMeta(connection, null, null, QueryType.TABLE, visitor);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  }<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>  /**<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * @param connection connection we're using<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   * @param type scanned part of meta<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   * @return List of {@link Result}<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  public static List&lt;Result&gt; fullScan(Connection connection, QueryType type)<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    throws IOException {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    CollectAllVisitor v = new CollectAllVisitor();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    scanMeta(connection, null, null, type, v);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    return v.getResults();<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  }<a name="line.264"></a>
+<span class="sourceLineNo">265</span><a name="line.265"></a>
+<span class="sourceLineNo">266</span>  /**<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   * Callers should call close on the returned {@link Table} instance.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   * @param connection connection we're using to access Meta<a name="line.268"></a>
+<span class="sourceLineNo">269</span>   * @return An {@link Table} for &lt;code&gt;hbase:meta&lt;/code&gt;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>   */<a name="line.270"></a>
+<span class="sourceLineNo">271</span>  public static Table getMetaHTable(final Connection connection)<a name="line.271"></a>
+<span class="sourceLineNo">272</span>  throws IOException {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // We used to pass whole CatalogTracker in here, now we just pass in Connection<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    if (connection == null) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      throw new NullPointerException("No connection");<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    } else if (connection.isClosed()) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      throw new IOException("connection is closed");<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    return connection.getTable(TableName.META_TABLE_NAME);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>  /**<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * @param t Table to use (will be closed when done).<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   * @param g Get to run<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   */<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  private static Result get(final Table t, final Get g) throws IOException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    if (t == null) return null;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    try {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      return t.get(g);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    } finally {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      t.close();<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>  /**<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   * Gets the region info and assignment for the specified region.<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   * @param connection connection we're using<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * @param regionName Region to lookup.<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   * @return Location and RegionInfo for &lt;code&gt;regionName&lt;/code&gt;<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   * @deprecated use {@link #getRegionLocation(Connection, byte[])} instead<a name="line.300"></a>
+<span class="sourceLineNo">301</span>   */<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  @Deprecated<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  public static Pair&lt;RegionInfo, ServerName&gt; getRegion(Connection connection, byte [] regionName)<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    throws IOException {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    HRegionLocation location = getRegionLocation(connection, regionName);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    return location == null<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      ? null<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      : new Pair&lt;&gt;(location.getRegionInfo(), location.getServerName());<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>  /**<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   * Returns the HRegionLocation from meta for the given region<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * @param connection connection we're using<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   * @param regionName region we're looking for<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * @return HRegionLocation for the given region<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   */<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public static HRegionLocation getRegionLocation(Connection connection, byte[] regionName)<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      throws IOException {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    byte[] row = regionName;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    RegionInfo parsedInfo = null;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    try {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      parsedInfo = parseRegionInfoFromRegionName(regionName);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      row = getMetaKeyForRegion(parsedInfo);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    } catch (Exception parseEx) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      // Ignore. This is used with tableName passed as regionName.<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    Get get = new Get(row);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    Result r = get(getMetaHTable(connection), get);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    RegionLocations locations = getRegionLocations(r);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    return locations == null ? null<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      : locations.getRegionLocation(parsedInfo == null ? 0 : parsedInfo.getReplicaId());<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>  /**<a name="line.335"></a>
+<span class="sourceLineNo">336</span>   * Returns the HRegionLocation from meta for the given region<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * @param connection connection we're using<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * @param regionInfo region information<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * @return HRegionLocation for the given region<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   */<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  public static HRegionLocation getRegionLocation(Connection connection, RegionInfo regionInfo)<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      throws IOException {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    byte[] row = getMetaKeyForRegion(regionInfo);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    Get get = new Get(row);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    Result r = get(getMetaHTable(connection), get);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    return getRegionLocation(r, regionInfo, regionInfo.getReplicaId());<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  /** Returns the row key to use for this regionInfo */<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  public static byte[] getMetaKeyForRegion(RegionInfo regionInfo) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    return RegionReplicaUtil.getRegionInfoForDefaultReplica(regionInfo).getRegionName();<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  /** Returns an HRI parsed from this regionName. Not all the fields of the HRI<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * is stored in the name, so the returned object should only be used for the fields<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * in the regionName.<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   */<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  public static RegionInfo parseRegionInfoFromRegionName(byte[] regionName) throws IOException {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    byte[][] fields = RegionInfo.parseRegionName(regionName);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    long regionId = Long.parseLong(Bytes.toString(fields[2]));<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    int replicaId = fields.length &gt; 3 ? Integer.parseInt(Bytes.toString(fields[3]), 16) : 0;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    return RegionInfoBuilder.newBuilder(TableName.valueOf(fields[0]))<a name="line.363"></a>
+<span class="sourceLineNo">364</span>              .setStartKey(fields[1])<a name="line.364"></a>
+<span class="sourceLineNo">365</span>              .setEndKey(fields[2])<a name="line.365"></a>
+<span class="sourceLineNo">366</span>              .setSplit(false)<a name="line.366"></a>
+<span class="sourceLineNo">367</span>              .setRegionId(regionId)<a name="line.367"></a>
+<span class="sourceLineNo">368</span>              .setReplicaId(replicaId)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>              .build();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  /**<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * Gets the result in hbase:meta for the specified region.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * @param connection connection we're using<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param regionName region we're looking for<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @return result of the specified region<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   */<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  public static Result getRegionResult(Connection connection,<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      byte[] regionName) throws IOException {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    Get get = new Get(regionName);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return get(getMetaHTable(connection), get);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>  /**<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * Get regions from the merge qualifier of the specified merged region<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * @return null if it doesn't contain merge qualifier, else two merge regions<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  @Nullable<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  public static Pair&lt;RegionInfo, RegionInfo&gt; getRegionsFromMergeQualifier(<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      Connection connection, byte[] regionName) throws IOException {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    Result result = getRegionResult(connection, regionName);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    RegionInfo mergeA = getRegionInfo(result, HConstants.MERGEA_QUALIFIER);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    RegionInfo mergeB = getRegionInfo(result, HConstants.MERGEB_QUALIFIER);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    if (mergeA == null &amp;&amp; mergeB == null) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      return null;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    return new Pair&lt;&gt;(mergeA, mergeB);<a name="line.398"></a>
+<span class="sourceLineNo">399</span> }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>  /**<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   * Checks if the specified table exists.  Looks at the hbase:meta table hosted on<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   * the specified server.<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * @param connection connection we're using<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   * @param tableName table to check<a name="line.405"></a>
+<span class="sourceLineNo">406</span>   * @return true if the table exists in meta, false if not<a name="line.406"></a>
+<span class="sourceLineNo">407</span>   */<a name="line.407"></a>
+<span class="sourceLineNo">408</span>  public static boolean tableExists(Connection connection,<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      final TableName tableName)<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  throws IOException {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // Catalog tables always exist.<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    return tableName.equals(TableName.META_TABLE_NAME)<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        || getTableState(connection, tableName) != null;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  }<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>  /**<a name="line.416"></a>
+<span class="sourceLineNo">417</span>   * Lists all of the regions currently in META.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   *<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * @param connection to connect with<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   * @param excludeOfflinedSplitParents False if we are to include offlined/splitparents regions,<a name="line.420"></a>
+<span class="sourceLineNo">421</span>   *                                    true and we'll leave out offlined regions from returned list<a name="line.421"></a>
+<span class="sourceLineNo">422</span>   * @return List of all user-space regions.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>   */<a name="line.423"></a>
+<span class="sourceLineNo">424</span>  @VisibleForTesting<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  public static List&lt;RegionInfo&gt; getAllRegions(Connection connection,<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      boolean excludeOfflinedSplitParents)<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      throws IOException {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result;<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>    result = getTableRegionsAndLocations(connection, null,<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        excludeOfflinedSplitParents);<a name="line.431"></a>
 <span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>  }<a name="line.433"></a>
+<span class="sourceLineNo">433</span>    return getListOfRegionInfos(result);<a name="line.433"></a>
 <span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>  /**<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * Gets all of the regions of the specified table. Do not use this method<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * to get meta table regions, use methods in MetaTableLocator instead.<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * @param connection connection we're using<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   * @param tableName table we're looking for<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   * @return Ordered list of {@link RegionInfo}.<a name="line.440"></a>
-<span class="sourceLineNo">441</span>   */<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  public static List&lt;RegionInfo&gt; getTableRegions(Connection connection, TableName tableName)<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  throws IOException {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    return getTableRegions(connection, tableName, false);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>  /**<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * Gets all of the regions of the specified table. Do not use this method<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   * to get meta table regions, use methods in MetaTableLocator instead.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * @param connection connection we're using<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * @param tableName table we're looking for<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * @param excludeOfflinedSplitParents If true, do not include offlined split<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * parents in the return.<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * @return Ordered list of {@link RegionInfo}.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   */<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  public static List&lt;RegionInfo&gt; getTableRegions(Connection connection, TableName tableName,<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      final boolean excludeOfflinedSplitParents) throws IOException {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result =<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      getTableRegionsAndLocations(connection, tableName, excludeOfflinedSplitParents);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    return getListOfRegionInfos(result);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>  }<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>  private static List&lt;RegionInfo&gt; getListOfRegionInfos(<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      final List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; pairs) {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    if (pairs == null || pairs.isEmpty()) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      return Collections.emptyList();<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    List&lt;RegionInfo&gt; result = new ArrayList&lt;&gt;(pairs.size());<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    for (Pair&lt;RegionInfo, ServerName&gt; pair : pairs) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      result.add(pair.getFirst());<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return result;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * @param tableName table we're working with<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @return start row for scanning META according to query type<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  public static byte[] getTableStartRowForMeta(TableName tableName, QueryType type) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    if (tableName == null) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      return null;<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    }<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    switch (type) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    case REGION:<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      byte[] startRow = new byte[tableName.getName().length + 2];<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      System.arraycopy(tableName.getName(), 0, startRow, 0, tableName.getName().length);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      startRow[startRow.length - 2] = HConstants.DELIMITER;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      startRow[startRow.length - 1] = HConstants.DELIMITER;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      return startRow;<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    case ALL:<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    case TABLE:<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    default:<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      return tableName.getName();<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  }<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>  /**<a name="line.497"></a>
-<span class="sourceLineNo">498</span>   * @param tableName table we're working with<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * @return stop row for scanning META according to query type<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   */<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  public static byte[] getTableStopRowForMeta(TableName tableName, QueryType type) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    if (tableName == null) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      return null;<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    }<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    final byte[] stopRow;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    switch (type) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    case REGION:<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      stopRow = new byte[tableName.getName().length + 3];<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      System.arraycopy(tableName.getName(), 0, stopRow, 0, tableName.getName().length);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      stopRow[stopRow.length - 3] = ' ';<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      stopRow[stopRow.length - 2] = HConstants.DELIMITER;<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      stopRow[stopRow.length - 1] = HConstants.DELIMITER;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      break;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    case ALL:<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    case TABLE:<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    default:<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      stopRow = new byte[tableName.getName().length + 1];<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      System.arraycopy(tableName.getName(), 0, stopRow, 0, tableName.getName().length);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      stopRow[stopRow.length - 1] = ' ';<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      break;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    }<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    return stopRow;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>  /**<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * This method creates a Scan object that will only scan catalog rows that<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * belong to the specified table. It doesn't specify any columns.<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   * This is a better alternative to just using a start row and scan until<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * it hits a new table since that requires parsing the HRI to get the table<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * name.<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * @param tableName bytes of table's name<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * @return configured Scan object<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   */<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  @Deprecated<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  public static Scan getScanForTableName(Connection connection, TableName tableName) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    // Start key is just the table name with delimiters<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    byte[] startKey = getTableStartRowForMeta(tableName, QueryType.REGION);<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    // Stop key appends the smallest possible char to the table name<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    byte[] stopKey = getTableStopRowForMeta(tableName, QueryType.REGION);<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>    Scan scan = getMetaScan(connection, -1);<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    scan.setStartRow(startKey);<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    scan.setStopRow(stopKey);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    return scan;<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>  private static Scan getMetaScan(Connection connection, int rowUpperLimit) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    Scan scan = new Scan();<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    int scannerCaching = connection.getConfiguration()<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        .getInt(HConstants.HBASE_META_SCANNER_CACHING,<a name="line.550"></a>
-<span class="sourceLineNo">551</span>            HConstants.DEFAULT_HBASE_META_SCANNER_CACHING);<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    if (connection.getConfiguration().getBoolean(HConstants.USE_META_REPLICAS,<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        HConstants.DEFAULT_USE_META_REPLICAS)) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      scan.setConsistency(Consistency.TIMELINE);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    if (rowUpperLimit &gt; 0) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      scan.setLimit(rowUpperLimit);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      scan.setReadType(Scan.ReadType.PREAD);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    }<a name="line.559"></a>
-<span class="source

<TRUNCATED>

[24/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index 7854e62..cbbdddd 100644
--- a/book.html
+++ b/book.html
@@ -25813,7 +25813,7 @@ This is a default behavior of the this tool does.</p>
 <div class="sect3">
 <h4 id="_run_canary_test_as_daemon_mode"><a class="anchor" href="#_run_canary_test_as_daemon_mode"></a>144.1.5. Run canary test as daemon mode</h4>
 <div class="paragraph">
-<p>Run repeatedly with interval defined in option <code>-interval</code> whose default value is 6 seconds.
+<p>Run repeatedly with interval defined in option <code>-interval</code> whose default value is 60 seconds.
 This daemon will stop itself and return non-zero error code if any error occurs, due to the default value of option -f is true.</p>
 </div>
 <div class="listingblock">
@@ -31429,61 +31429,9 @@ branches for past major/minor/maintenance releases and important features and bu
 </div>
 </div>
 <div class="sect2">
-<h3 id="_release_managers"><a class="anchor" href="#_release_managers"></a>167.2. Release Managers</h3>
-<div class="paragraph">
-<p>Each maintained release branch has a release manager, who volunteers to coordinate new features and bug fixes are backported to that release.
-The release managers are <a href="https://hbase.apache.org/team-list.html">committers</a>.
-If you would like your feature or bug fix to be included in a given release, communicate with that release manager.
-If this list goes out of date or you can&#8217;t reach the listed person, reach out to someone else on the list.</p>
-</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-End-of-life releases are not included in this list.
-</td>
-</tr>
-</table>
-</div>
-<table class="tableblock frame-all grid-all spread">
-<caption class="title">Table 20. Release Managers</caption>
-<colgroup>
-<col style="width: 50%;">
-<col style="width: 50%;">
-</colgroup>
-<thead>
-<tr>
-<th class="tableblock halign-left valign-top">Release</th>
-<th class="tableblock halign-left valign-top">Release Manager</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">1.2</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Sean Busbey</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">1.3</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Mikhail Antonov</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">1.4</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Andrew Purtell</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">2.0</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Michael Stack</p></td>
-</tr>
-</tbody>
-</table>
-</div>
-<div class="sect2">
-<h3 id="code.standards"><a class="anchor" href="#code.standards"></a>167.3. Code Standards</h3>
+<h3 id="code.standards"><a class="anchor" href="#code.standards"></a>167.2. Code Standards</h3>
 <div class="sect3">
-<h4 id="_interface_classifications"><a class="anchor" href="#_interface_classifications"></a>167.3.1. Interface Classifications</h4>
+<h4 id="_interface_classifications"><a class="anchor" href="#_interface_classifications"></a>167.2.1. Interface Classifications</h4>
 <div class="paragraph">
 <p>Interfaces are classified both by audience and by stability level.
 These labels appear at the head of a class.
@@ -31561,7 +31509,7 @@ Mark your new packages if publicly accessible.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="common.patch.feedback"><a class="anchor" href="#common.patch.feedback"></a>167.3.2. Code Formatting Conventions</h4>
+<h4 id="common.patch.feedback"><a class="anchor" href="#common.patch.feedback"></a>167.2.2. Code Formatting Conventions</h4>
 <div class="paragraph">
 <p>Please adhere to the following guidelines so that your patches can be reviewed more quickly.
 These guidelines have been developed based upon common feedback on patches from new contributors.</p>
@@ -31749,7 +31697,7 @@ If you are creating a new class that needs to implement this interface, do not f
 </div>
 </div>
 <div class="sect3">
-<h4 id="_garbage_collection_conserving_guidelines"><a class="anchor" href="#_garbage_collection_conserving_guidelines"></a>167.3.3. Garbage-Collection Conserving Guidelines</h4>
+<h4 id="_garbage_collection_conserving_guidelines"><a class="anchor" href="#_garbage_collection_conserving_guidelines"></a>167.2.3. Garbage-Collection Conserving Guidelines</h4>
 <div class="paragraph">
 <p>The following guidelines were borrowed from <a href="http://engineering.linkedin.com/performance/linkedin-feed-faster-less-jvm-garbage" class="bare">http://engineering.linkedin.com/performance/linkedin-feed-faster-less-jvm-garbage</a>.
 Keep them in mind to keep preventable garbage  collection to a minimum. Have a look
@@ -31781,13 +31729,13 @@ these guidelines.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="design.invariants"><a class="anchor" href="#design.invariants"></a>167.4. Invariants</h3>
+<h3 id="design.invariants"><a class="anchor" href="#design.invariants"></a>167.3. Invariants</h3>
 <div class="paragraph">
 <p>We don&#8217;t have many but what we have we list below.
 All are subject to challenge of course but until then, please hold to the rules of the road.</p>
 </div>
 <div class="sect3">
-<h4 id="design.invariants.zk.data"><a class="anchor" href="#design.invariants.zk.data"></a>167.4.1. No permanent state in ZooKeeper</h4>
+<h4 id="design.invariants.zk.data"><a class="anchor" href="#design.invariants.zk.data"></a>167.3.1. No permanent state in ZooKeeper</h4>
 <div class="paragraph">
 <p>ZooKeeper state should transient (treat it like memory). If ZooKeeper state is deleted, hbase should be able to recover and essentially be in the same state.</p>
 </div>
@@ -31819,7 +31767,7 @@ Follow progress on this issue at <a href="https://issues.apache.org/jira/browse/
 </div>
 </div>
 <div class="sect2">
-<h3 id="run.insitu"><a class="anchor" href="#run.insitu"></a>167.5. Running In-Situ</h3>
+<h3 id="run.insitu"><a class="anchor" href="#run.insitu"></a>167.4. Running In-Situ</h3>
 <div class="paragraph">
 <p>If you are developing Apache HBase, frequently it is useful to test your changes against a more-real cluster than what you find in unit tests.
 In this case, HBase can be run directly from the source in local-mode.
@@ -31848,7 +31796,7 @@ Generally, the above command is just a good thing to try running first, if maven
 </div>
 </div>
 <div class="sect2">
-<h3 id="add.metrics"><a class="anchor" href="#add.metrics"></a>167.6. Adding Metrics</h3>
+<h3 id="add.metrics"><a class="anchor" href="#add.metrics"></a>167.5. Adding Metrics</h3>
 <div class="paragraph">
 <p>After adding a new feature a developer might want to add metrics.
 HBase exposes metrics using the Hadoop Metrics 2 system, so adding a new metric involves exposing that metric to the hadoop system.
@@ -31858,14 +31806,14 @@ To get an in-depth look at the reasoning and structure of these classes you can
 To add a metric to an existing MBean follow the short guide below:</p>
 </div>
 <div class="sect3">
-<h4 id="_add_metric_name_and_function_to_hadoop_compat_interface"><a class="anchor" href="#_add_metric_name_and_function_to_hadoop_compat_interface"></a>167.6.1. Add Metric name and Function to Hadoop Compat Interface.</h4>
+<h4 id="_add_metric_name_and_function_to_hadoop_compat_interface"><a class="anchor" href="#_add_metric_name_and_function_to_hadoop_compat_interface"></a>167.5.1. Add Metric name and Function to Hadoop Compat Interface.</h4>
 <div class="paragraph">
 <p>Inside of the source interface the corresponds to where the metrics are generated (eg MetricsMasterSource for things coming from HMaster) create new static strings for metric name and description.
 Then add a new method that will be called to add new reading.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_add_the_implementation_to_both_hadoop_1_and_hadoop_2_compat_modules"><a class="anchor" href="#_add_the_implementation_to_both_hadoop_1_and_hadoop_2_compat_modules"></a>167.6.2. Add the Implementation to Both Hadoop 1 and Hadoop 2 Compat modules.</h4>
+<h4 id="_add_the_implementation_to_both_hadoop_1_and_hadoop_2_compat_modules"><a class="anchor" href="#_add_the_implementation_to_both_hadoop_1_and_hadoop_2_compat_modules"></a>167.5.2. Add the Implementation to Both Hadoop 1 and Hadoop 2 Compat modules.</h4>
 <div class="paragraph">
 <p>Inside of the implementation of the source (eg.
 MetricsMasterSourceImpl in the above example) create a new histogram, counter, gauge, or stat in the init method.
@@ -31878,7 +31826,7 @@ For this the MetricsAssertHelper is provided.</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="git.best.practices"><a class="anchor" href="#git.best.practices"></a>167.7. Git Best Practices</h3>
+<h3 id="git.best.practices"><a class="anchor" href="#git.best.practices"></a>167.6. Git Best Practices</h3>
 <div class="dlist">
 <dl>
 <dt class="hdlist1">Avoid git merges.</dt>
@@ -31895,7 +31843,7 @@ For this the MetricsAssertHelper is provided.</p>
 <p>Please contribute to this document if you think of other Git best practices.</p>
 </div>
 <div class="sect3">
-<h4 id="__code_rebase_all_git_branches_sh_code"><a class="anchor" href="#__code_rebase_all_git_branches_sh_code"></a>167.7.1. <code>rebase_all_git_branches.sh</code></h4>
+<h4 id="__code_rebase_all_git_branches_sh_code"><a class="anchor" href="#__code_rebase_all_git_branches_sh_code"></a>167.6.1. <code>rebase_all_git_branches.sh</code></h4>
 <div class="paragraph">
 <p>The <em>dev-support/rebase_all_git_branches.sh</em> script is provided to help keep your Git repository clean.
 Use the <code>-h</code>                    parameter to get usage instructions.
@@ -31908,7 +31856,7 @@ The script checks the directory for sub-directory called <em>.git/</em>, before
 </div>
 </div>
 <div class="sect2">
-<h3 id="submitting.patches"><a class="anchor" href="#submitting.patches"></a>167.8. Submitting Patches</h3>
+<h3 id="submitting.patches"><a class="anchor" href="#submitting.patches"></a>167.7. Submitting Patches</h3>
 <div class="paragraph">
 <p>If you are new to submitting patches to open source or new to submitting patches to Apache, start by
  reading the <a href="https://commons.apache.org/patches.html">On Contributing Patches</a> page from
@@ -31918,7 +31866,7 @@ It provides a nice overview that applies equally to the Apache HBase Project.
 good read to understand development workflow.</p>
 </div>
 <div class="sect3">
-<h4 id="submitting.patches.create"><a class="anchor" href="#submitting.patches.create"></a>167.8.1. Create Patch</h4>
+<h4 id="submitting.patches.create"><a class="anchor" href="#submitting.patches.create"></a>167.7.1. Create Patch</h4>
 <div class="paragraph">
 <p>Make sure you review <a href="#common.patch.feedback">common.patch.feedback</a> for code style. If your
 patch
@@ -32024,7 +31972,7 @@ Click on <b class="button">Cancel Patch</b> and then on <b class="button">Submit
 </div>
 </div>
 <div class="sect3">
-<h4 id="submitting.patches.tests"><a class="anchor" href="#submitting.patches.tests"></a>167.8.2. Unit Tests</h4>
+<h4 id="submitting.patches.tests"><a class="anchor" href="#submitting.patches.tests"></a>167.7.2. Unit Tests</h4>
 <div class="paragraph">
 <p>Always add and/or update relevant unit tests when making the changes.
 Make sure that new/changed unit tests pass locally before submitting the patch because it is faster
@@ -32041,13 +31989,13 @@ See <a href="#hbase.tests">hbase.tests</a> for more information on tests.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_integration_tests"><a class="anchor" href="#_integration_tests"></a>167.8.3. Integration Tests</h4>
+<h4 id="_integration_tests"><a class="anchor" href="#_integration_tests"></a>167.7.3. Integration Tests</h4>
 <div class="paragraph">
 <p>Significant new features should provide an integration test in addition to unit tests, suitable for exercising the new feature at different points in its configuration space.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="reviewboard"><a class="anchor" href="#reviewboard"></a>167.8.4. ReviewBoard</h4>
+<h4 id="reviewboard"><a class="anchor" href="#reviewboard"></a>167.7.4. ReviewBoard</h4>
 <div class="paragraph">
 <p>Patches larger than one screen, or patches that will be tricky to review, should go through <a href="https://reviews.apache.org">ReviewBoard</a>.</p>
 </div>
@@ -32090,7 +32038,7 @@ This attaches the ReviewBoard to the JIRA, for easy access.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_guide_for_hbase_committers"><a class="anchor" href="#_guide_for_hbase_committers"></a>167.8.5. Guide for HBase Committers</h4>
+<h4 id="_guide_for_hbase_committers"><a class="anchor" href="#_guide_for_hbase_committers"></a>167.7.5. Guide for HBase Committers</h4>
 <div class="sect4">
 <h5 id="_new_committers"><a class="anchor" href="#_new_committers"></a>New committers</h5>
 <div class="paragraph">
@@ -32370,21 +32318,21 @@ A committer should.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_dialog"><a class="anchor" href="#_dialog"></a>167.8.6. Dialog</h4>
+<h4 id="_dialog"><a class="anchor" href="#_dialog"></a>167.7.6. Dialog</h4>
 <div class="paragraph">
 <p>Committers should hang out in the #hbase room on irc.freenode.net for real-time discussions.
 However any substantive discussion (as with any off-list project-related discussion) should be re-iterated in Jira or on the developer list.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_do_not_edit_jira_comments"><a class="anchor" href="#_do_not_edit_jira_comments"></a>167.8.7. Do not edit JIRA comments</h4>
+<h4 id="_do_not_edit_jira_comments"><a class="anchor" href="#_do_not_edit_jira_comments"></a>167.7.7. Do not edit JIRA comments</h4>
 <div class="paragraph">
 <p>Misspellings and/or bad grammar is preferable to the disruption a JIRA comment edit causes: See the discussion at <a href="http://search-hadoop.com/?q=%5BReopened%5D+%28HBASE-451%29+Remove+HTableDescriptor+from+HRegionInfo&amp;fc_project=HBase">Re:(HBASE-451) Remove HTableDescriptor from HRegionInfo</a></p>
 </div>
 </div>
 </div>
 <div class="sect2">
-<h3 id="thirdparty"><a class="anchor" href="#thirdparty"></a>167.9. The hbase-thirdparty dependency and shading/relocation</h3>
+<h3 id="thirdparty"><a class="anchor" href="#thirdparty"></a>167.8. The hbase-thirdparty dependency and shading/relocation</h3>
 <div class="paragraph">
 <p>A new project was created for the release of hbase-2.0.0. It was called
 <code>hbase-thirdparty</code>. This project exists only to provide the main hbase
@@ -32428,7 +32376,7 @@ in the hbase-thirdparty, use the hbase JIRA and mailing lists to post notice.</p
 </div>
 </div>
 <div class="sect2">
-<h3 id="hbase.archetypes.development"><a class="anchor" href="#hbase.archetypes.development"></a>167.10. Development of HBase-related Maven archetypes</h3>
+<h3 id="hbase.archetypes.development"><a class="anchor" href="#hbase.archetypes.development"></a>167.9. Development of HBase-related Maven archetypes</h3>
 <div class="paragraph">
 <p>The development of HBase-related Maven archetypes was begun with
 <a href="https://issues.apache.org/jira/browse/HBASE-14876">HBASE-14876</a>.
@@ -33430,27 +33378,6 @@ When the feature is ready for commit, 3 +1s from committers will get your featur
 See <a href="http://search-hadoop.com/m/asM982C5FkS1">HBase, mail # dev - Thoughts
               about large feature dev branches</a></p>
 </div>
-<div id="patchplusonepolicy" class="paragraph">
-<div class="title">Patch +1 Policy</div>
-<p>The below policy is something we put in place 09/2012.
-It is a suggested policy rather than a hard requirement.
-We want to try it first to see if it works before we cast it in stone.</p>
-</div>
-<div class="paragraph">
-<p>Apache HBase is made of <a href="https://issues.apache.org/jira/projects/HBASE?selectedItem=com.atlassian.jira.jira-projects-plugin:components-page">components</a>.
-Components have one or more <a href="#owner">OWNER</a>s.
-See the 'Description' field on the <a href="https://issues.apache.org/jira/projects/HBASE?selectedItem=com.atlassian.jira.jira-projects-plugin:components-page">components</a> JIRA page for who the current owners are by component.</p>
-</div>
-<div class="paragraph">
-<p>Patches that fit within the scope of a single Apache HBase component require, at least, a +1 by one of the component&#8217;s owners before commit.
-If owners are absent&#8201;&#8212;&#8201;busy or otherwise&#8201;&#8212;&#8201;two +1s by non-owners will suffice.</p>
-</div>
-<div class="paragraph">
-<p>Patches that span components need at least two +1s before they can be committed, preferably +1s by owners of components touched by the x-component patch (TODO: This needs tightening up but I think fine for first pass).</p>
-</div>
-<div class="paragraph">
-<p>Any -1 on a patch by anyone vetoes a patch; it cannot be committed until the justification for the -1 is addressed.</p>
-</div>
 <div id="hbase.fix.version.in.jira" class="paragraph">
 <div class="title">How to set fix version in JIRA on issue resolve</div>
 <p>Here is how <a href="http://search-hadoop.com/m/azemIi5RCJ1">we agreed</a> to set versions in JIRA when we resolve an issue.
@@ -33488,27 +33415,57 @@ We also are currently in violation of this basic tenet&#8201;&#8212;&#8201;repli
 <div class="sect1">
 <h2 id="community.roles"><a class="anchor" href="#community.roles"></a>176. Community Roles</h2>
 <div class="sectionbody">
-<div id="owner" class="paragraph">
-<div class="title">Component Owner/Lieutenant</div>
-<p>Component owners are listed in the description field on this Apache HBase JIRA <a href="https://issues.apache.org/jira/projects/HBASE?selectedItem=com.atlassian.jira.jira-projects-plugin:components-page">components</a> page.
-The owners are listed in the 'Description' field rather than in the 'Component Lead' field because the latter only allows us list one individual whereas it is encouraged that components have multiple owners.</p>
-</div>
+<div class="sect2">
+<h3 id="_release_managers"><a class="anchor" href="#_release_managers"></a>176.1. Release Managers</h3>
 <div class="paragraph">
-<p>Owners or component lieutenants are volunteers who are (usually, but not necessarily) expert in their component domain and may have an agenda on how they think their Apache HBase component should evolve.</p>
+<p>Each maintained release branch has a release manager, who volunteers to coordinate new features and bug fixes are backported to that release.
+The release managers are <a href="https://hbase.apache.org/team-list.html">committers</a>.
+If you would like your feature or bug fix to be included in a given release, communicate with that release manager.
+If this list goes out of date or you can&#8217;t reach the listed person, reach out to someone else on the list.</p>
 </div>
-<div class="olist arabic">
-<ol class="arabic">
-<li>
-<p>Owners will try and review patches that land within their component&#8217;s scope.</p>
-</li>
-<li>
-<p>If applicable, if an owner has an agenda, they will publish their goals or the design toward which they are driving their component</p>
-</li>
-</ol>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+End-of-life releases are not included in this list.
+</td>
+</tr>
+</table>
 </div>
-<div class="paragraph">
-<p>If you would like to be volunteer as a component owner, just write the dev list and we&#8217;ll sign you up.
-Owners do not need to be committers.</p>
+<table class="tableblock frame-all grid-all spread">
+<caption class="title">Table 20. Release Managers</caption>
+<colgroup>
+<col style="width: 50%;">
+<col style="width: 50%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-top">Release</th>
+<th class="tableblock halign-left valign-top">Release Manager</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1.2</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Sean Busbey</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1.3</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Mikhail Antonov</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">1.4</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Andrew Purtell</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">2.0</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Michael Stack</p></td>
+</tr>
+</tbody>
+</table>
 </div>
 </div>
 </div>
@@ -37111,7 +37068,7 @@ The server will return cellblocks compressed using this same compressor as long
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2018-03-31 14:29:54 UTC
+Last updated 2018-04-01 14:29:51 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index 53781c6..ec1a372 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180331" />
+    <meta name="Date-Revision-yyyymmdd" content="20180401" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -296,7 +296,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-31</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-04-01</li>
             </p>
                 </div>
 


[15/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/replication/class-use/ReplicationException.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/class-use/ReplicationException.html b/devapidocs/org/apache/hadoop/hbase/replication/class-use/ReplicationException.html
index 17cad92..1157a3a 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/class-use/ReplicationException.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/class-use/ReplicationException.html
@@ -368,76 +368,89 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">UpdatePeerConfigProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#addToList-java.util.List-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationQueueStorage-">addToList</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;encodedRegionNames,
+         <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;encodedRegionName,
+         <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueueStorage</a>&nbsp;queueStorage)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#addToMap-java.util.Map-java.lang.String-long-org.apache.hadoop.hbase.replication.ReplicationQueueStorage-">addToMap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;lastSeqIds,
         <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;encodedRegionName,
         long&nbsp;barrier,
         <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueueStorage</a>&nbsp;queueStorage)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">ReplicationPeerManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html#checkQueuesDeleted-java.lang.String-">checkQueuesDeleted</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;peerId)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html" title="class in org.apache.hadoop.hbase.master.replication">ReplicationPeerManager</a></code></td>
 <td class="colLast"><span class="typeNameLabel">ReplicationPeerManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html#create-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.conf.Configuration-">create</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zk,
       org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">ReplicationPeerManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html#disablePeer-java.lang.String-">disablePeer</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;peerId)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">ReplicationPeerManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html#enablePeer-java.lang.String-">enablePeer</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;peerId)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">AddPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#postPeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postPeerModification</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">UpdatePeerConfigProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#postPeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postPeerModification</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected abstract void</code></td>
 <td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#postPeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postPeerModification</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Called before we finish the procedure.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">RemovePeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/RemovePeerProcedure.html#postPeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">postPeerModification</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><span class="typeNameLabel">ReplicationPeerManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html#preAddPeer-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">preAddPeer</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;peerId,
           <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">AddPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#prePeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prePeerModification</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected abstract void</code></td>
 <td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#prePeerModification-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">prePeerModification</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>
 <div class="block">Called before we start the actual processing.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><span class="typeNameLabel">ReplicationPeerManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html#removeAllLastPushedSeqIds-java.lang.String-">removeAllLastPushedSeqIds</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;peerId)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><span class="typeNameLabel">ReplicationPeerManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html#removeAllQueuesAndHFileRefs-java.lang.String-">removeAllQueuesAndHFileRefs</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;peerId)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">ReplicationPeerManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html#removePeer-java.lang.String-">removePeer</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;peerId)</code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setLastPushedSequenceId-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">setLastPushedSequenceId</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+                       <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig)</code>&nbsp;</td>
+</tr>
 <tr class="altColor">
-<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setLastSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">setLastSequenceIdForSerialPeer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setLastPushedSequenceIdForTable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.TableName-java.util.Map-">setLastPushedSequenceIdForTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+                               <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;lastSeqIds)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
@@ -445,31 +458,43 @@
             boolean&nbsp;enabled)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">AddPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#updateLastPushedSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateLastPushedSequenceIdForSerialPeer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">UpdatePeerConfigProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#updateLastPushedSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateLastPushedSequenceIdForSerialPeer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#updateLastPushedSequenceIdForSerialPeer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updateLastPushedSequenceIdForSerialPeer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">ReplicationPeerManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html#updatePeerConfig-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">updatePeerConfig</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;peerId,
                 <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">AddPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/AddPeerProcedure.html#updatePeerStorage-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updatePeerStorage</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">EnablePeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/EnablePeerProcedure.html#updatePeerStorage-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updatePeerStorage</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">UpdatePeerConfigProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#updatePeerStorage-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updatePeerStorage</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected abstract void</code></td>
 <td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#updatePeerStorage-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updatePeerStorage</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">DisablePeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/DisablePeerProcedure.html#updatePeerStorage-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updatePeerStorage</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">RemovePeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/RemovePeerProcedure.html#updatePeerStorage-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">updatePeerStorage</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
 </tr>
@@ -747,6 +772,18 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">ReplicationQueueStorage.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#removeLastSequenceIds-java.lang.String-java.util.List-">removeLastSequenceIds</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;peerId,
+                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;encodedRegionNames)</code>
+<div class="block">Remove the max sequence id record for the given peer and regions.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">ZKReplicationQueueStorage.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#removeLastSequenceIds-java.lang.String-java.util.List-">removeLastSequenceIds</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;peerId,
+                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;encodedRegionNames)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">ReplicationPeerStorage.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerStorage.html#removePeer-java.lang.String-">removePeer</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;peerId)</code>
 <div class="block">Remove a replication peer.</div>
 </td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/replication/class-use/ReplicationPeerConfig.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/class-use/ReplicationPeerConfig.html b/devapidocs/org/apache/hadoop/hbase/replication/class-use/ReplicationPeerConfig.html
index b0a9962..6cefcd6 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/class-use/ReplicationPeerConfig.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/class-use/ReplicationPeerConfig.html
@@ -668,6 +668,11 @@
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setLastPushedSequenceId-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">setLastPushedSequenceId</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+                       <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">ReplicationPeerManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html#updatePeerConfig-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">updatePeerConfig</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;peerId,
                 <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig)</code>&nbsp;</td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/replication/class-use/ReplicationQueueStorage.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/class-use/ReplicationQueueStorage.html b/devapidocs/org/apache/hadoop/hbase/replication/class-use/ReplicationQueueStorage.html
index e79cd8d..f31cc32 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/class-use/ReplicationQueueStorage.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/class-use/ReplicationQueueStorage.html
@@ -148,6 +148,12 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">UpdatePeerConfigProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/UpdatePeerConfigProcedure.html#addToList-java.util.List-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationQueueStorage-">addToList</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;encodedRegionNames,
+         <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;encodedRegionName,
+         <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueueStorage</a>&nbsp;queueStorage)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#addToMap-java.util.Map-java.lang.String-long-org.apache.hadoop.hbase.replication.ReplicationQueueStorage-">addToMap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;lastSeqIds,
         <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;encodedRegionName,
         long&nbsp;barrier,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
index d9fa142..bf7ef69 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
@@ -137,8 +137,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.OpType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessController.OpType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Action</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.OpType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessController.OpType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessControlFilter.Strategy.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessControlFilter.Strategy</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
index 7ba3a64..29d7634 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
@@ -191,9 +191,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/AuthMethod.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">AuthMethod</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslStatus.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslStatus</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslUtil.QualityOfProtection</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/AuthMethod.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">AuthMethod</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
index 971f463..5958135 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -532,14 +532,14 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Order</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Order</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLock.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLock.ReferenceType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
index 9ec5b35..c0e28b4 100644
--- a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -189,8 +189,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/WALFactory.Providers.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">WALFactory.Providers</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/RegionGroupingProvider.Strategies.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">RegionGroupingProvider.Strategies</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/WALFactory.Providers.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">WALFactory.Providers</span></a></li>
 </ul>
 </li>
 </ul>


[17/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
index 7a0f9d1..99ba6a9 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -228,12 +228,12 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottleType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottleType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottlingException.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">OperationQuota.OperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceViolationPolicy.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">SpaceViolationPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottlingException.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottleType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottleType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index 952aa32..1b36782 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -704,20 +704,20 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactionStrategy.Action</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">FlushType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.NextState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.LimitScope.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.LimitScope</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">BloomType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TimeRangeTracker.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.IndexType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.TaskExecutor.Status.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">SplitLogWorker.TaskExecutor.Status</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultHeapMemoryTuner.StepDirection.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DefaultHeapMemoryTuner.StepDirection</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.ChunkType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TimeRangeTracker.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.NextState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScanType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactionStrategy.Action</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChunkCreator.ChunkType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.ChunkType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">FlushType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.IndexType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.TaskExecutor.Status.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">SplitLogWorker.TaskExecutor.Status</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
index 3bd22b5..2731576 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
@@ -131,8 +131,8 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">ScanQueryMatcher.MatchCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/StripeCompactionScanQueryMatcher.DropDeletesInOutput.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">StripeCompactionScanQueryMatcher.DropDeletesInOutput</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/DeleteTracker.DeleteResult.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">DeleteTracker.DeleteResult</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/StripeCompactionScanQueryMatcher.DropDeletesInOutput.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">StripeCompactionScanQueryMatcher.DropDeletesInOutput</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html
index 6b44a8e..e8e3d35 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6,"i18":6,"i19":6,"i20":6};
+var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6,"i10":6,"i11":6,"i12":6,"i13":6,"i14":6,"i15":6,"i16":6,"i17":6,"i18":6,"i19":6,"i20":6,"i21":6};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -228,24 +228,31 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 </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/replication/ReplicationQueueStorage.html#removeLastSequenceIds-java.lang.String-java.util.List-">removeLastSequenceIds</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;peerId,
+                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;encodedRegionNames)</code>
+<div class="block">Remove the max sequence id record for the given peer and regions.</div>
+</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/replication/ReplicationQueueStorage.html#removePeerFromHFileRefs-java.lang.String-">removePeerFromHFileRefs</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;peerId)</code>
 <div class="block">Remove a peer from hfile reference queue.</div>
 </td>
 </tr>
-<tr id="i16" class="altColor">
+<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/replication/ReplicationQueueStorage.html#removeQueue-org.apache.hadoop.hbase.ServerName-java.lang.String-">removeQueue</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
            <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;queueId)</code>
 <div class="block">Remove a replication queue for a given regionserver.</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<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/replication/ReplicationQueueStorage.html#removeReplicatorIfQueueIsEmpty-org.apache.hadoop.hbase.ServerName-">removeReplicatorIfQueueIsEmpty</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</code>
 <div class="block">Remove the record of region server if the queue is empty.</div>
 </td>
 </tr>
-<tr id="i18" class="altColor">
+<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/replication/ReplicationQueueStorage.html#removeWAL-org.apache.hadoop.hbase.ServerName-java.lang.String-java.lang.String-">removeWAL</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
          <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;queueId,
@@ -253,14 +260,14 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <div class="block">Remove an WAL file from the given queue for a given regionserver.</div>
 </td>
 </tr>
-<tr id="i19" class="rowColor">
+<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/replication/ReplicationQueueStorage.html#setLastSequenceIds-java.lang.String-java.util.Map-">setLastSequenceIds</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;peerId,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;lastSeqIds)</code>
 <div class="block">Set the max sequence id of a bunch of regions for a given peer.</div>
 </td>
 </tr>
-<tr id="i20" class="altColor">
+<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/replication/ReplicationQueueStorage.html#setWALPosition-org.apache.hadoop.hbase.ServerName-java.lang.String-java.lang.String-long-java.util.Map-">setWALPosition</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
               <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;queueId,
@@ -431,13 +438,32 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 </dl>
 </li>
 </ul>
+<a name="removeLastSequenceIds-java.lang.String-java.util.List-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>removeLastSequenceIds</h4>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.100">removeLastSequenceIds</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;peerId,
+                           <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;encodedRegionNames)
+                    throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
+<div class="block">Remove the max sequence id record for the given peer and regions.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>peerId</code> - peer id</dd>
+<dd><code>encodedRegionNames</code> - the encoded region names</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></code></dd>
+</dl>
+</li>
+</ul>
 <a name="getWALPosition-org.apache.hadoop.hbase.ServerName-java.lang.String-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getWALPosition</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.101">getWALPosition</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.110">getWALPosition</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                     <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;queueId,
                     <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;fileName)
              throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
@@ -460,7 +486,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockList">
 <li class="blockList">
 <h4>getWALsInQueue</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.110">getWALsInQueue</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.119">getWALsInQueue</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                             <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;queueId)
                      throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block">Get a list of all WALs in the given queue on the given region server.</div>
@@ -481,7 +507,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllQueues</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.117">getAllQueues</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.126">getAllQueues</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
                    throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block">Get a list of all queues for the specified region server.</div>
 <dl>
@@ -500,7 +526,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockList">
 <li class="blockList">
 <h4>claimQueue</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.126">claimQueue</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sourceServerName,
+<pre><a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.135">claimQueue</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sourceServerName,
                                           <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;queueId,
                                           <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;destServerName)
                                    throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
@@ -523,7 +549,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockList">
 <li class="blockList">
 <h4>removeReplicatorIfQueueIsEmpty</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.132">removeReplicatorIfQueueIsEmpty</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.141">removeReplicatorIfQueueIsEmpty</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
                              throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block">Remove the record of region server if the queue is empty.</div>
 <dl>
@@ -538,7 +564,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockList">
 <li class="blockList">
 <h4>getListOfReplicators</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.139">getListOfReplicators</a>()
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.148">getListOfReplicators</a>()
                                throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block">Get a list of all region servers that have outstanding replication queues. These servers could
  be alive, dead or from a previous run of the cluster.</div>
@@ -556,7 +582,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllWALs</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.146">getAllWALs</a>()
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.155">getAllWALs</a>()
                 throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block">Load all wals in all replication queues. This method guarantees to return a snapshot which
  contains all WALs at the start of this call even there is concurrent queue failover. However,
@@ -573,7 +599,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockList">
 <li class="blockList">
 <h4>addPeerToHFileRefs</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.153">addPeerToHFileRefs</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;peerId)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.162">addPeerToHFileRefs</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;peerId)
                  throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block">Add a peer to hfile reference queue if peer does not exist.</div>
 <dl>
@@ -590,7 +616,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockList">
 <li class="blockList">
 <h4>removePeerFromHFileRefs</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.159">removePeerFromHFileRefs</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;peerId)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.168">removePeerFromHFileRefs</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;peerId)
                       throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block">Remove a peer from hfile reference queue.</div>
 <dl>
@@ -607,7 +633,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockList">
 <li class="blockList">
 <h4>addHFileRefs</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.168">addHFileRefs</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;peerId,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.177">addHFileRefs</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;peerId,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path&gt;&gt;&nbsp;pairs)
            throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block">Add new hfile references to the queue.</div>
@@ -627,7 +653,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockList">
 <li class="blockList">
 <h4>removeHFileRefs</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.175">removeHFileRefs</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;peerId,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.184">removeHFileRefs</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;peerId,
                      <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;files)
               throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block">Remove hfile references from the queue.</div>
@@ -646,7 +672,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllPeersFromHFileRefsQueue</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.181">getAllPeersFromHFileRefsQueue</a>()
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.190">getAllPeersFromHFileRefsQueue</a>()
                                     throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block">Get list of all peers from hfile reference queue.</div>
 <dl>
@@ -663,7 +689,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicableHFiles</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.188">getReplicableHFiles</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;peerId)
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.197">getReplicableHFiles</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;peerId)
                           throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block">Get a list of all hfile references in the given peer.</div>
 <dl>
@@ -682,7 +708,7 @@ public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/replic
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getAllHFileRefs</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.195">getAllHFileRefs</a>()
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#line.204">getAllHFileRefs</a>()
                      throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block">Load all hfile references in all replication queues. This method guarantees to return a
  snapshot which contains all hfile references at the start of this call. However, some newly


[16/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html b/devapidocs/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html
index ee6838f..33b09d9 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -119,7 +119,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.83">ZKReplicationQueueStorage</a>
+class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.84">ZKReplicationQueueStorage</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/replication/ZKReplicationStorageBase.html" title="class in org.apache.hadoop.hbase.replication">ZKReplicationStorageBase</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueueStorage</a></pre>
 <div class="block">ZK based replication queue storage.
@@ -421,24 +421,31 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 </tr>
 <tr id="i31" class="rowColor">
 <td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#removeLastSequenceIds-java.lang.String-java.util.List-">removeLastSequenceIds</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;peerId,
+                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;encodedRegionNames)</code>
+<div class="block">Remove the max sequence id record for the given peer and regions.</div>
+</td>
+</tr>
+<tr id="i32" class="altColor">
+<td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#removePeerFromHFileRefs-java.lang.String-">removePeerFromHFileRefs</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;peerId)</code>
 <div class="block">Remove a peer from hfile reference queue.</div>
 </td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i33" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#removeQueue-org.apache.hadoop.hbase.ServerName-java.lang.String-">removeQueue</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
            <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;queueId)</code>
 <div class="block">Remove a replication queue for a given regionserver.</div>
 </td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#removeReplicatorIfQueueIsEmpty-org.apache.hadoop.hbase.ServerName-">removeReplicatorIfQueueIsEmpty</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</code>
 <div class="block">Remove the record of region server if the queue is empty.</div>
 </td>
 </tr>
-<tr id="i34" class="altColor">
+<tr id="i35" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#removeWAL-org.apache.hadoop.hbase.ServerName-java.lang.String-java.lang.String-">removeWAL</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
          <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;queueId,
@@ -446,14 +453,14 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <div class="block">Remove an WAL file from the given queue for a given regionserver.</div>
 </td>
 </tr>
-<tr id="i35" class="rowColor">
+<tr id="i36" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#setLastSequenceIds-java.lang.String-java.util.Map-">setLastSequenceIds</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;peerId,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;lastSeqIds)</code>
 <div class="block">Set the max sequence id of a bunch of regions for a given peer.</div>
 </td>
 </tr>
-<tr id="i36" class="altColor">
+<tr id="i37" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#setWALPosition-org.apache.hadoop.hbase.ServerName-java.lang.String-java.lang.String-long-java.util.Map-">setWALPosition</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
               <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;queueId,
@@ -498,7 +505,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <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/replication/ZKReplicationQueueStorage.html#line.86">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.87">LOG</a></pre>
 </li>
 </ul>
 <a name="ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY">
@@ -507,7 +514,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.88">ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.89">ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.replication.ZKReplicationQueueStorage.ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY">Constant Field Values</a></dd>
@@ -520,7 +527,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.90">ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.91">ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.replication.ZKReplicationQueueStorage.ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT">Constant Field Values</a></dd>
@@ -533,7 +540,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>ZOOKEEPER_ZNODE_REPLICATION_REGIONS_KEY</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.92">ZOOKEEPER_ZNODE_REPLICATION_REGIONS_KEY</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.93">ZOOKEEPER_ZNODE_REPLICATION_REGIONS_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.replication.ZKReplicationQueueStorage.ZOOKEEPER_ZNODE_REPLICATION_REGIONS_KEY">Constant Field Values</a></dd>
@@ -546,7 +553,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>ZOOKEEPER_ZNODE_REPLICATION_REGIONS_DEFAULT</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.94">ZOOKEEPER_ZNODE_REPLICATION_REGIONS_DEFAULT</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.95">ZOOKEEPER_ZNODE_REPLICATION_REGIONS_DEFAULT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.replication.ZKReplicationQueueStorage.ZOOKEEPER_ZNODE_REPLICATION_REGIONS_DEFAULT">Constant Field Values</a></dd>
@@ -559,7 +566,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>queuesZNode</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.99">queuesZNode</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.100">queuesZNode</a></pre>
 <div class="block">The name of the znode that contains all replication queues</div>
 </li>
 </ul>
@@ -569,7 +576,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>hfileRefsZNode</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.104">hfileRefsZNode</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.105">hfileRefsZNode</a></pre>
 <div class="block">The name of the znode that contains queues of hfile references to be replicated</div>
 </li>
 </ul>
@@ -579,7 +586,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockListLast">
 <li class="blockList">
 <h4>regionsZNode</h4>
-<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.107">regionsZNode</a></pre>
+<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.108">regionsZNode</a></pre>
 </li>
 </ul>
 </li>
@@ -596,7 +603,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ZKReplicationQueueStorage</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.109">ZKReplicationQueueStorage</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zookeeper,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.110">ZKReplicationQueueStorage</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;zookeeper,
                                  org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
@@ -614,7 +621,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getRsNode</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.121">getRsNode</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.122">getRsNode</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 </li>
 </ul>
 <a name="getQueueNode-org.apache.hadoop.hbase.ServerName-java.lang.String-">
@@ -623,7 +630,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getQueueNode</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.125">getQueueNode</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.126">getQueueNode</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                             <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;queueId)</pre>
 </li>
 </ul>
@@ -633,7 +640,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getFileNode</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.129">getFileNode</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;queueNode,
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.130">getFileNode</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;queueNode,
                            <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;fileName)</pre>
 </li>
 </ul>
@@ -643,7 +650,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getFileNode</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.133">getFileNode</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.134">getFileNode</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                            <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;queueId,
                            <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;fileName)</pre>
 </li>
@@ -654,7 +661,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getSerialReplicationRegionPeerNode</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.161">getSerialReplicationRegionPeerNode</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;encodedRegionName,
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.162">getSerialReplicationRegionPeerNode</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;encodedRegionName,
                                           <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;peerId)</pre>
 <div class="block"><p>
  Put all regions under /hbase/replication/regions znode will lead to too many children because
@@ -689,7 +696,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>removeQueue</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.173">removeQueue</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.174">removeQueue</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                         <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;queueId)
                  throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#removeQueue-org.apache.hadoop.hbase.ServerName-java.lang.String-">ReplicationQueueStorage</a></code></span></div>
@@ -711,7 +718,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>addWAL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.183">addWAL</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.184">addWAL</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                    <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;queueId,
                    <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;fileName)
             throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
@@ -736,7 +743,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>removeWAL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.194">removeWAL</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.195">removeWAL</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                       <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;queueId,
                       <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;fileName)
                throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
@@ -760,7 +767,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>addLastSeqIdsToOps</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.207">addLastSeqIdsToOps</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;queueId,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.208">addLastSeqIdsToOps</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;queueId,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;lastSeqIds,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp</a>&gt;&nbsp;listOfOps)
                          throws org.apache.zookeeper.KeeperException,
@@ -778,7 +785,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>setWALPosition</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.231">setWALPosition</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.232">setWALPosition</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                            <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;queueId,
                            <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;fileName,
                            long&nbsp;position,
@@ -806,7 +813,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastSequenceIdWithVersion</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.266">getLastSequenceIdWithVersion</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;encodedRegionName,
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.267">getLastSequenceIdWithVersion</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;encodedRegionName,
                                                           <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;peerId)
                                                    throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Return the {lastPushedSequenceId, ZNodeDataVersion} pair. if ZNodeDataVersion is -1, it means
@@ -823,7 +830,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastSequenceId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.285">getLastSequenceId</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;encodedRegionName,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.286">getLastSequenceId</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;encodedRegionName,
                               <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;peerId)
                        throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#getLastSequenceId-java.lang.String-java.lang.String-">ReplicationQueueStorage</a></code></span></div>
@@ -848,7 +855,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>setLastSequenceIds</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.296">setLastSequenceIds</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;peerId,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.297">setLastSequenceIds</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;peerId,
                                <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;lastSeqIds)
                         throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#setLastSequenceIds-java.lang.String-java.util.Map-">ReplicationQueueStorage</a></code></span></div>
@@ -871,7 +878,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>removeLastSequenceIds</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.317">removeLastSequenceIds</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;peerId)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.318">removeLastSequenceIds</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;peerId)
                            throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#removeLastSequenceIds-java.lang.String-">ReplicationQueueStorage</a></code></span></div>
 <div class="block">Remove all the max sequence id record for the given peer.</div>
@@ -885,13 +892,35 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 </dl>
 </li>
 </ul>
+<a name="removeLastSequenceIds-java.lang.String-java.util.List-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>removeLastSequenceIds</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.352">removeLastSequenceIds</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;peerId,
+                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;encodedRegionNames)
+                           throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#removeLastSequenceIds-java.lang.String-java.util.List-">ReplicationQueueStorage</a></code></span></div>
+<div class="block">Remove the max sequence id record for the given peer and regions.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#removeLastSequenceIds-java.lang.String-java.util.List-">removeLastSequenceIds</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html" title="interface in org.apache.hadoop.hbase.replication">ReplicationQueueStorage</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>peerId</code> - peer id</dd>
+<dd><code>encodedRegionNames</code> - the encoded region names</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></code></dd>
+</dl>
+</li>
+</ul>
 <a name="getWALPosition-org.apache.hadoop.hbase.ServerName-java.lang.String-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getWALPosition</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.351">getWALPosition</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.366">getWALPosition</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                            <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;queueId,
                            <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;fileName)
                     throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
@@ -917,7 +946,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>claimQueue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.371">claimQueue</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sourceServerName,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/SortedSet.html?is-external=true" title="class or interface in java.util">SortedSet</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.386">claimQueue</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sourceServerName,
                                                  <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;queueId,
                                                  <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;destServerName)
                                           throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
@@ -943,7 +972,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>removeReplicatorIfQueueIsEmpty</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.428">removeReplicatorIfQueueIsEmpty</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.443">removeReplicatorIfQueueIsEmpty</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
                                     throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#removeReplicatorIfQueueIsEmpty-org.apache.hadoop.hbase.ServerName-">ReplicationQueueStorage</a></code></span></div>
 <div class="block">Remove the record of region server if the queue is empty.</div>
@@ -961,7 +990,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getListOfReplicators0</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.438">getListOfReplicators0</a>()
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.453">getListOfReplicators0</a>()
                                         throws org.apache.zookeeper.KeeperException</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -975,7 +1004,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getListOfReplicators</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.444">getListOfReplicators</a>()
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.459">getListOfReplicators</a>()
                                       throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#getListOfReplicators--">ReplicationQueueStorage</a></code></span></div>
 <div class="block">Get a list of all region servers that have outstanding replication queues. These servers could
@@ -996,7 +1025,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getWALsInQueue0</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.452">getWALsInQueue0</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.467">getWALsInQueue0</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                                      <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;queueId)
                               throws org.apache.zookeeper.KeeperException</pre>
 <dl>
@@ -1011,7 +1040,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getWALsInQueue</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.458">getWALsInQueue</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.473">getWALsInQueue</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                                    <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;queueId)
                             throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#getWALsInQueue-org.apache.hadoop.hbase.ServerName-java.lang.String-">ReplicationQueueStorage</a></code></span></div>
@@ -1035,7 +1064,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllQueues0</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.469">getAllQueues0</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.484">getAllQueues0</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
                             throws org.apache.zookeeper.KeeperException</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1049,7 +1078,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllQueues</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.474">getAllQueues</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.489">getAllQueues</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
                           throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#getAllQueues-org.apache.hadoop.hbase.ServerName-">ReplicationQueueStorage</a></code></span></div>
 <div class="block">Get a list of all queues for the specified region server.</div>
@@ -1071,7 +1100,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getQueuesZNodeCversion</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.484">getQueuesZNodeCversion</a>()
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.499">getQueuesZNodeCversion</a>()
                               throws org.apache.zookeeper.KeeperException</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1085,7 +1114,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllWALs</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.491">getAllWALs</a>()
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.506">getAllWALs</a>()
                        throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#getAllWALs--">ReplicationQueueStorage</a></code></span></div>
 <div class="block">Load all wals in all replication queues. This method guarantees to return a snapshot which
@@ -1105,7 +1134,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getHFileRefsPeerNode</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.518">getHFileRefsPeerNode</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;peerId)</pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.533">getHFileRefsPeerNode</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;peerId)</pre>
 </li>
 </ul>
 <a name="getHFileNode-java.lang.String-java.lang.String-">
@@ -1114,7 +1143,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getHFileNode</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.522">getHFileNode</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;peerNode,
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.537">getHFileNode</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;peerNode,
                             <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;fileName)</pre>
 </li>
 </ul>
@@ -1124,7 +1153,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>addPeerToHFileRefs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.527">addPeerToHFileRefs</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;peerId)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.542">addPeerToHFileRefs</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;peerId)
                         throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#addPeerToHFileRefs-java.lang.String-">ReplicationQueueStorage</a></code></span></div>
 <div class="block">Add a peer to hfile reference queue if peer does not exist.</div>
@@ -1144,7 +1173,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>removePeerFromHFileRefs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.541">removePeerFromHFileRefs</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;peerId)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.556">removePeerFromHFileRefs</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;peerId)
                              throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#removePeerFromHFileRefs-java.lang.String-">ReplicationQueueStorage</a></code></span></div>
 <div class="block">Remove a peer from hfile reference queue.</div>
@@ -1164,7 +1193,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>addHFileRefs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.557">addHFileRefs</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;peerId,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.572">addHFileRefs</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;peerId,
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path&gt;&gt;&nbsp;pairs)
                   throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#addHFileRefs-java.lang.String-java.util.List-">ReplicationQueueStorage</a></code></span></div>
@@ -1187,7 +1216,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>removeHFileRefs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.574">removeHFileRefs</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;peerId,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.589">removeHFileRefs</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;peerId,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;files)
                      throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#removeHFileRefs-java.lang.String-java.util.List-">ReplicationQueueStorage</a></code></span></div>
@@ -1209,7 +1238,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllPeersFromHFileRefsQueue0</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.589">getAllPeersFromHFileRefsQueue0</a>()
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.604">getAllPeersFromHFileRefsQueue0</a>()
                                              throws org.apache.zookeeper.KeeperException</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1223,7 +1252,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllPeersFromHFileRefsQueue</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.594">getAllPeersFromHFileRefsQueue</a>()
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.609">getAllPeersFromHFileRefsQueue</a>()
                                            throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#getAllPeersFromHFileRefsQueue--">ReplicationQueueStorage</a></code></span></div>
 <div class="block">Get list of all peers from hfile reference queue.</div>
@@ -1243,7 +1272,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicableHFiles0</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.603">getReplicableHFiles0</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;peerId)
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.618">getReplicableHFiles0</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;peerId)
                                    throws org.apache.zookeeper.KeeperException</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1257,7 +1286,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getReplicableHFiles</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.608">getReplicableHFiles</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;peerId)
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.623">getReplicableHFiles</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;peerId)
                                  throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#getReplicableHFiles-java.lang.String-">ReplicationQueueStorage</a></code></span></div>
 <div class="block">Get a list of all hfile references in the given peer.</div>
@@ -1279,7 +1308,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockList">
 <li class="blockList">
 <h4>getHFileRefsZNodeCversion</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.619">getHFileRefsZNodeCversion</a>()
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.634">getHFileRefsZNodeCversion</a>()
                                  throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1293,7 +1322,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/replication/Replicati
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getAllHFileRefs</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.630">getAllHFileRefs</a>()
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html#line.645">getAllHFileRefs</a>()
                             throws <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationException.html" title="class in org.apache.hadoop.hbase.replication">ReplicationException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationQueueStorage.html#getAllHFileRefs--">ReplicationQueueStorage</a></code></span></div>
 <div class="block">Load all hfile references in all replication queues. This method guarantees to return a


[20/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index 90d9b0f..5890b1a 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -167,8 +167,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupPhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupPhase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupPhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupPhase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/class-use/MetaTableAccessor.QueryType.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/MetaTableAccessor.QueryType.html b/devapidocs/org/apache/hadoop/hbase/class-use/MetaTableAccessor.QueryType.html
index 7b9127d..b869b5b 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/MetaTableAccessor.QueryType.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/MetaTableAccessor.QueryType.html
@@ -172,6 +172,16 @@ the order they are declared.</div>
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>private static void</code></td>
+<td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMeta-org.apache.hadoop.hbase.client.Connection-byte:A-byte:A-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-org.apache.hadoop.hbase.filter.Filter-int-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-">scanMeta</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+        byte[]&nbsp;startRow,
+        byte[]&nbsp;stopRow,
+        <a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;type,
+        <a href="../../../../../org/apache/hadoop/hbase/filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a>&nbsp;filter,
+        int&nbsp;maxRows,
+        <a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMeta-org.apache.hadoop.hbase.client.Connection-byte:A-byte:A-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-int-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-">scanMeta</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
         byte[]&nbsp;startRow,
@@ -182,7 +192,7 @@ the order they are declared.</div>
 <div class="block">Performs a scan of META table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMeta-org.apache.hadoop.hbase.client.Connection-byte:A-byte:A-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-">scanMeta</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
         byte[]&nbsp;startRow,
@@ -190,7 +200,7 @@ the order they are declared.</div>
         <a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;type,
         <a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMeta-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-int-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-">scanMeta</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
         <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/class-use/MetaTableAccessor.Visitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/MetaTableAccessor.Visitor.html b/devapidocs/org/apache/hadoop/hbase/class-use/MetaTableAccessor.Visitor.html
index 30f4c49..62f5981 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/MetaTableAccessor.Visitor.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/MetaTableAccessor.Visitor.html
@@ -198,6 +198,16 @@
 </td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>private static void</code></td>
+<td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMeta-org.apache.hadoop.hbase.client.Connection-byte:A-byte:A-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-org.apache.hadoop.hbase.filter.Filter-int-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-">scanMeta</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+        byte[]&nbsp;startRow,
+        byte[]&nbsp;stopRow,
+        <a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;type,
+        <a href="../../../../../org/apache/hadoop/hbase/filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a>&nbsp;filter,
+        int&nbsp;maxRows,
+        <a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMeta-org.apache.hadoop.hbase.client.Connection-byte:A-byte:A-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-int-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-">scanMeta</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
         byte[]&nbsp;startRow,
@@ -208,7 +218,7 @@
 <div class="block">Performs a scan of META table.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMeta-org.apache.hadoop.hbase.client.Connection-byte:A-byte:A-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-">scanMeta</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
         byte[]&nbsp;startRow,
@@ -216,7 +226,7 @@
         <a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;type,
         <a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMeta-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-org.apache.hadoop.hbase.TableName-byte:A-int-">scanMeta</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
         <a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor,
@@ -227,7 +237,7 @@
  given row.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMeta-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-int-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-">scanMeta</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
         <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
@@ -235,7 +245,7 @@
         int&nbsp;maxRows,
         <a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMetaForTableRegions-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-org.apache.hadoop.hbase.TableName-">scanMetaForTableRegions</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                        <a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html b/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html
index d91cb65..5e32e9f 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/TableName.html
@@ -632,13 +632,18 @@ service.</div>
                                        <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableEncodedRegionNamesForSerialReplication-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">getTableEncodedRegionNamesForSerialReplication</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
+                                              <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableRegions-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">getTableRegions</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Gets all of the regions of the specified table.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableRegions-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-boolean-">getTableRegions</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -646,14 +651,14 @@ service.</div>
 <div class="block">Gets all of the regions of the specified table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableRegionsAndLocations-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">getTableRegionsAndLocations</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                            <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Do not use this method to get meta table regions, use methods in MetaTableLocator instead.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableRegionsAndLocations-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-boolean-">getTableRegionsAndLocations</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                            <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -661,37 +666,37 @@ service.</div>
 <div class="block">Do not use this method to get meta table regions, use methods in MetaTableLocator instead.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableStartRowForMeta-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-">getTableStartRowForMeta</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/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;type)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/TableState.html" title="class in org.apache.hadoop.hbase.client">TableState</a>&gt;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">AsyncMetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#getTableState-org.apache.hadoop.hbase.client.AsyncTable-org.apache.hadoop.hbase.TableName-">getTableState</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/AsyncTable.html" title="interface in org.apache.hadoop.hbase.client">AsyncTable</a>&lt;?&gt;&nbsp;metaTable,
              <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/client/TableState.html" title="class in org.apache.hadoop.hbase.client">TableState</a></code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableState-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">getTableState</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
              <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Fetch table state for given table from META table</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableStopRowForMeta-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-">getTableStopRowForMeta</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/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;type)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">TableName.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/TableName.html#isMetaTableName-org.apache.hadoop.hbase.TableName-">isMetaTableName</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tn)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TableDescriptors.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/TableDescriptors.html#remove-org.apache.hadoop.hbase.TableName-">remove</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tablename)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMeta-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-org.apache.hadoop.hbase.TableName-byte:A-int-">scanMeta</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
         <a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor,
@@ -702,7 +707,7 @@ service.</div>
  given row.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMeta-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-int-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-">scanMeta</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
         <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
@@ -710,25 +715,25 @@ service.</div>
         int&nbsp;maxRows,
         <a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMetaForTableRegions-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-org.apache.hadoop.hbase.TableName-">scanMetaForTableRegions</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                        <a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor,
                        <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">AsyncMetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/AsyncMetaTableAccessor.html#tableExists-org.apache.hadoop.hbase.client.AsyncTable-org.apache.hadoop.hbase.TableName-">tableExists</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/AsyncTable.html" title="interface in org.apache.hadoop.hbase.client">AsyncTable</a>&lt;?&gt;&nbsp;metaTable,
            <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#tableExists-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">tableExists</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
            <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Checks if the specified table exists.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#updateTableState-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableState.State-">updateTableState</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
                 <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -7485,6 +7490,12 @@ service.</div>
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">ReplicationPeerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html#getSerialPeerIdsBelongsTo-org.apache.hadoop.hbase.TableName-">getSerialPeerIdsBelongsTo</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#setLastPushedSequenceIdForTable-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-org.apache.hadoop.hbase.TableName-java.util.Map-">setLastPushedSequenceIdForTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+                               <a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+                               <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;lastSeqIds)</code>&nbsp;</td>
+</tr>
 </tbody>
 </table>
 <table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/client/class-use/Connection.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/Connection.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/Connection.html
index 9b46453..02d7b34 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/Connection.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/Connection.html
@@ -516,13 +516,18 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
                                        <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableEncodedRegionNamesForSerialReplication-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">getTableEncodedRegionNamesForSerialReplication</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
+                                              <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableRegions-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">getTableRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Gets all of the regions of the specified table.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableRegions-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-boolean-">getTableRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -530,14 +535,14 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Gets all of the regions of the specified table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableRegionsAndLocations-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">getTableRegionsAndLocations</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                            <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Do not use this method to get meta table regions, use methods in MetaTableLocator instead.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableRegionsAndLocations-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-boolean-">getTableRegionsAndLocations</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                            <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -545,20 +550,20 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Do not use this method to get meta table regions, use methods in MetaTableLocator instead.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../../org/apache/hadoop/hbase/client/TableState.html" title="class in org.apache.hadoop.hbase.client">TableState</a></code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableState-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-">getTableState</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn,
              <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Fetch table state for given table from META table</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="../../../../../../org/apache/hadoop/hbase/client/TableState.html" title="class in org.apache.hadoop.hbase.client">TableState</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#getTableStates-org.apache.hadoop.hbase.client.Connection-">getTableStates</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn)</code>
 <div class="block">Fetch table states from META table</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#mergeRegions-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-long-org.apache.hadoop.hbase.client.RegionInfo-long-org.apache.hadoop.hbase.ServerName-int-">mergeRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
             <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;mergedRegion,
@@ -571,7 +576,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Merge the two regions into one in an atomic operation.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#multiMutate-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.client.Table-byte:A-java.util.List-">multiMutate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
            <a href="../../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;table,
@@ -580,21 +585,21 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Performs an atomic multi-mutate operation against the given table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#multiMutate-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.client.Table-byte:A-org.apache.hadoop.hbase.client.Mutation...-">multiMutate</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
            <a href="../../../../../../org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;table,
            byte[]&nbsp;row,
            <a href="../../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>...&nbsp;mutations)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#mutateMetaTable-org.apache.hadoop.hbase.client.Connection-java.util.List-">mutateMetaTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;mutations)</code>
 <div class="block">Execute the passed <code>mutations</code> against <code>hbase:meta</code> table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#overwriteRegions-org.apache.hadoop.hbase.client.Connection-java.util.List-int-">overwriteRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                 <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;regionInfos,
@@ -602,21 +607,21 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Overwrites the specified regions from hbase:meta.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#putsToMetaTable-org.apache.hadoop.hbase.client.Connection-java.util.List-">putsToMetaTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
                <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&gt;&nbsp;ps)</code>
 <div class="block">Put the passed <code>ps</code> to the <code>hbase:meta</code> table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#putToMetaTable-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.client.Put-">putToMetaTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
               <a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)</code>
 <div class="block">Put the passed <code>p</code> to the <code>hbase:meta</code> table.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#removeRegionReplicasFromMeta-java.util.Set-int-int-org.apache.hadoop.hbase.client.Connection-">removeRegionReplicasFromMeta</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;byte[]&gt;&nbsp;metaRows,
                             int&nbsp;replicaIndexToDeleteFrom,
@@ -625,6 +630,16 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Deletes some replica columns corresponding to replicas for the passed rows</div>
 </td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static void</code></td>
+<td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMeta-org.apache.hadoop.hbase.client.Connection-byte:A-byte:A-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-org.apache.hadoop.hbase.filter.Filter-int-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-">scanMeta</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+        byte[]&nbsp;startRow,
+        byte[]&nbsp;stopRow,
+        <a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;type,
+        <a href="../../../../../../org/apache/hadoop/hbase/filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a>&nbsp;filter,
+        int&nbsp;maxRows,
+        <a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor)</code>&nbsp;</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMeta-org.apache.hadoop.hbase.client.Connection-byte:A-byte:A-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-int-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-">scanMeta</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/client/class-use/TableDescriptor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/TableDescriptor.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/TableDescriptor.html
index 013eb0e..68c8d82 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/TableDescriptor.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/TableDescriptor.html
@@ -140,50 +140,46 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.master.replication">org.apache.hadoop.hbase.master.replication</a></td>
-<td class="colLast">&nbsp;</td>
-</tr>
-<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.master.snapshot">org.apache.hadoop.hbase.master.snapshot</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.mob">org.apache.hadoop.hbase.mob</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver">org.apache.hadoop.hbase.regionserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver.handler">org.apache.hadoop.hbase.regionserver.handler</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.rest.client">org.apache.hadoop.hbase.rest.client</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.rsgroup">org.apache.hadoop.hbase.rsgroup</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.security.access">org.apache.hadoop.hbase.security.access</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.security.visibility">org.apache.hadoop.hbase.security.visibility</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.snapshot">org.apache.hadoop.hbase.snapshot</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.tmpl.master">org.apache.hadoop.hbase.tmpl.master</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.util">org.apache.hadoop.hbase.util</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
@@ -1705,24 +1701,6 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </tbody>
 </table>
 </li>
-<li class="blockList"><a name="org.apache.hadoop.hbase.master.replication">
-<!--   -->
-</a>
-<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a> in <a href="../../../../../../org/apache/hadoop/hbase/master/replication/package-summary.html">org.apache.hadoop.hbase.master.replication</a></h3>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
-<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/master/replication/package-summary.html">org.apache.hadoop.hbase.master.replication</a> that return types with arguments of type <a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html?is-external=true" title="class or interface in java.util.stream">Stream</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;</code></td>
-<td class="colLast"><span class="typeNameLabel">ModifyPeerProcedure.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/replication/ModifyPeerProcedure.html#getTables-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">getTables</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</code>&nbsp;</td>
-</tr>
-</tbody>
-</table>
-</li>
 <li class="blockList"><a name="org.apache.hadoop.hbase.master.snapshot">
 <!--   -->
 </a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
index 5f05328..fdc71f6 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -552,22 +552,22 @@
 <ul>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableState.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MasterSwitchType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ScannerCallable.MoreResults.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">ScannerCallable.MoreResults</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RequestController.ReturnCode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestController.ReturnCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactionState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcessTask.SubmittedRows.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncProcessTask.SubmittedRows</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Scan.ReadType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ScannerCallable.MoreResults.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">ScannerCallable.MoreResults</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">IsolationLevel</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcessTask.SubmittedRows.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncProcessTask.SubmittedRows</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncRequestFutureImpl.Retry.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncRequestFutureImpl.Retry</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLocateType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MobCompactPartitionPolicy.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MobCompactPartitionPolicy</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Scan.ReadType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactionState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncRequestFutureImpl.Retry.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncRequestFutureImpl.Retry</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MobCompactPartitionPolicy.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MobCompactPartitionPolicy</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/client/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/package-use.html b/devapidocs/org/apache/hadoop/hbase/client/package-use.html
index 0d8ba32..4d8b7b6 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-use.html
@@ -231,134 +231,130 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.master.replication">org.apache.hadoop.hbase.master.replication</a></td>
-<td class="colLast">&nbsp;</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.master.snapshot">org.apache.hadoop.hbase.master.snapshot</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.mob">org.apache.hadoop.hbase.mob</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.mob.compactions">org.apache.hadoop.hbase.mob.compactions</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.namespace">org.apache.hadoop.hbase.namespace</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.quotas">org.apache.hadoop.hbase.quotas</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.quotas.policies">org.apache.hadoop.hbase.quotas.policies</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver">org.apache.hadoop.hbase.regionserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver.handler">org.apache.hadoop.hbase.regionserver.handler</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver.querymatcher">org.apache.hadoop.hbase.regionserver.querymatcher</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver.wal">org.apache.hadoop.hbase.regionserver.wal</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.replication.regionserver">org.apache.hadoop.hbase.replication.regionserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.rest">org.apache.hadoop.hbase.rest</a></td>
 <td class="colLast">
 <div class="block">HBase REST</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.rest.client">org.apache.hadoop.hbase.rest.client</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.rest.model">org.apache.hadoop.hbase.rest.model</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.rsgroup">org.apache.hadoop.hbase.rsgroup</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.security">org.apache.hadoop.hbase.security</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.security.access">org.apache.hadoop.hbase.security.access</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.security.token">org.apache.hadoop.hbase.security.token</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.security.visibility">org.apache.hadoop.hbase.security.visibility</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.snapshot">org.apache.hadoop.hbase.snapshot</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift">org.apache.hadoop.hbase.thrift</a></td>
 <td class="colLast">
 <div class="block">Provides an HBase <a href="http://incubator.apache.org/thrift/">Thrift</a>
 service.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift2">org.apache.hadoop.hbase.thrift2</a></td>
 <td class="colLast">
 <div class="block">Provides an HBase <a href="http://thrift.apache.org/">Thrift</a>
 service.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.tmpl.master">org.apache.hadoop.hbase.tmpl.master</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.tmpl.regionserver">org.apache.hadoop.hbase.tmpl.regionserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.tool">org.apache.hadoop.hbase.tool</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.util">org.apache.hadoop.hbase.util</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.util.compaction">org.apache.hadoop.hbase.util.compaction</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.wal">org.apache.hadoop.hbase.wal</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.zookeeper">org.apache.hadoop.hbase.zookeeper</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hbase.archetypes.exemplars.client">org.apache.hbase.archetypes.exemplars.client</a></td>
 <td class="colLast">
 <div class="block">This package provides fully-functional exemplar Java code demonstrating
@@ -2450,26 +2446,6 @@ service.</div>
 </tbody>
 </table>
 </li>
-<li class="blockList"><a name="org.apache.hadoop.hbase.master.replication">
-<!--   -->
-</a>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing classes, and an explanation">
-<caption><span>Classes in <a href="../../../../../org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a> used by <a href="../../../../../org/apache/hadoop/hbase/master/replication/package-summary.html">org.apache.hadoop.hbase.master.replication</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colOne" scope="col">Class and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/client/class-use/TableDescriptor.html#org.apache.hadoop.hbase.master.replication">TableDescriptor</a>
-<div class="block">TableDescriptor contains the details about an HBase table such as the descriptors of
- all the column families, is the table a catalog table, <code> hbase:meta </code>,
- if the table is read only, the maximum size of the memstore,
- when the region split should occur, coprocessors associated with it etc...</div>
-</td>
-</tr>
-</tbody>
-</table>
-</li>
 <li class="blockList"><a name="org.apache.hadoop.hbase.master.snapshot">
 <!--   -->
 </a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
index ae0124e..ce950b0 100644
--- a/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/executor/package-tree.html
@@ -104,8 +104,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/ExecutorType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">ExecutorType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/EventType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">EventType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.executor.<a href="../../../../../org/apache/hadoop/hbase/executor/ExecutorType.html" title="enum in org.apache.hadoop.hbase.executor"><span class="typeNameLink">ExecutorType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/filter/class-use/Filter.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/filter/class-use/Filter.html b/devapidocs/org/apache/hadoop/hbase/filter/class-use/Filter.html
index 1bd633b..4e1c0ef 100644
--- a/devapidocs/org/apache/hadoop/hbase/filter/class-use/Filter.html
+++ b/devapidocs/org/apache/hadoop/hbase/filter/class-use/Filter.html
@@ -83,59 +83,63 @@
 </tr>
 <tbody>
 <tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase">org.apache.hadoop.hbase</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.client">org.apache.hadoop.hbase.client</a></td>
 <td class="colLast">
 <div class="block">Provides HBase Client</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.filter">org.apache.hadoop.hbase.filter</a></td>
 <td class="colLast">
 <div class="block">Provides row-level filters applied to HRegion scan results during calls to
  <a href="../../../../../../org/apache/hadoop/hbase/client/ResultScanner.html#next--"><code>ResultScanner.next()</code></a>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.mapred">org.apache.hadoop.hbase.mapred</a></td>
 <td class="colLast">
 <div class="block">Provides HBase <a href="http://wiki.apache.org/hadoop/HadoopMapReduce">MapReduce</a>
 Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.mapreduce">org.apache.hadoop.hbase.mapreduce</a></td>
 <td class="colLast">
 <div class="block">Provides HBase <a href="http://wiki.apache.org/hadoop/HadoopMapReduce">MapReduce</a>
 Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.quotas">org.apache.hadoop.hbase.quotas</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver">org.apache.hadoop.hbase.regionserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver.querymatcher">org.apache.hadoop.hbase.regionserver.querymatcher</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.rest">org.apache.hadoop.hbase.rest</a></td>
 <td class="colLast">
 <div class="block">HBase REST</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.rest.model">org.apache.hadoop.hbase.rest.model</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.security.access">org.apache.hadoop.hbase.security.access</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.security.visibility">org.apache.hadoop.hbase.security.visibility</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
@@ -144,6 +148,30 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </li>
 <li class="blockList">
 <ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a> in <a href="../../../../../../org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a> with parameters of type <a href="../../../../../../org/apache/hadoop/hbase/filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>private static void</code></td>
+<td class="colLast"><span class="typeNameLabel">MetaTableAccessor.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.html#scanMeta-org.apache.hadoop.hbase.client.Connection-byte:A-byte:A-org.apache.hadoop.hbase.MetaTableAccessor.QueryType-org.apache.hadoop.hbase.filter.Filter-int-org.apache.hadoop.hbase.MetaTableAccessor.Visitor-">scanMeta</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection,
+        byte[]&nbsp;startRow,
+        byte[]&nbsp;stopRow,
+        <a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase">MetaTableAccessor.QueryType</a>&nbsp;type,
+        <a href="../../../../../../org/apache/hadoop/hbase/filter/Filter.html" title="class in org.apache.hadoop.hbase.filter">Filter</a>&nbsp;filter,
+        int&nbsp;maxRows,
+        <a href="../../../../../../org/apache/hadoop/hbase/MetaTableAccessor.Visitor.html" title="interface in org.apache.hadoop.hbase">MetaTableAccessor.Visitor</a>&nbsp;visitor)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
 <li class="blockList"><a name="org.apache.hadoop.hbase.client">
 <!--   -->
 </a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
index 6cabf7c..3fc1f19 100644
--- a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
@@ -183,14 +183,14 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.Order.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.Order</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.FilterRowRetCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterWrapper.FilterRowRetCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">Filter.ReturnCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/BitComparator.BitwiseOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">BitComparator.BitwiseOp</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/CompareFilter.CompareOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">CompareFilter.CompareOp</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterList.Operator.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterList.Operator</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.SatisfiesCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.SatisfiesCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/CompareFilter.CompareOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">CompareFilter.CompareOp</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/RegexStringComparator.EngineType.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">RegexStringComparator.EngineType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/BitComparator.BitwiseOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">BitComparator.BitwiseOp</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.SatisfiesCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.SatisfiesCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.Order.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.Order</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">Filter.ReturnCode</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/filter/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/filter/package-use.html b/devapidocs/org/apache/hadoop/hbase/filter/package-use.html
index 271a1f9..8de0323 100644
--- a/devapidocs/org/apache/hadoop/hbase/filter/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/filter/package-use.html
@@ -170,6 +170,11 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Base class for byte array comparators</div>
 </td>
 </tr>
+<tr class="rowColor">
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/filter/class-use/Filter.html#org.apache.hadoop.hbase">Filter</a>
+<div class="block">Interface for row and column filters directly applied within the regionserver.</div>
+</td>
+</tr>
 </tbody>
 </table>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
index 9291562..340ec84 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -273,12 +273,12 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.BlockCategory.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType.BlockCategory</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockPriority</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.State.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">HFileBlock.Writer.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.ExternalBlockCaches.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">CacheConfig.ExternalBlockCaches</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.BlockCategory.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType.BlockCategory</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">Cacheable.MemoryType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockPriority</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.ExternalBlockCaches.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">CacheConfig.ExternalBlockCaches</span></a></li>
 </ul>
 </li>
 </ul>


[03/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html
index 3aa2ec6..4a4853f 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/ZKReplicationQueueStorage.html
@@ -37,629 +37,644 @@
 <span class="sourceLineNo">029</span>import java.util.Set;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>import java.util.SortedSet;<a name="line.30"></a>
 <span class="sourceLineNo">031</span>import java.util.TreeSet;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.conf.Configuration;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.fs.Path;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HConstants;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.ServerName;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.zookeeper.KeeperException;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.zookeeper.KeeperException.BadVersionException;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.zookeeper.KeeperException.NoNodeException;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.zookeeper.KeeperException.NodeExistsException;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.zookeeper.KeeperException.NotEmptyException;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.zookeeper.data.Stat;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.slf4j.Logger;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.slf4j.LoggerFactory;<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>/**<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * ZK based replication queue storage.<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * &lt;p&gt;<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * The base znode for each regionserver is the regionserver name. For example:<a name="line.60"></a>
-<span class="sourceLineNo">061</span> *<a name="line.61"></a>
-<span class="sourceLineNo">062</span> * &lt;pre&gt;<a name="line.62"></a>
-<span class="sourceLineNo">063</span> * /hbase/replication/rs/hostname.example.org,6020,1234<a name="line.63"></a>
-<span class="sourceLineNo">064</span> * &lt;/pre&gt;<a name="line.64"></a>
-<span class="sourceLineNo">065</span> *<a name="line.65"></a>
-<span class="sourceLineNo">066</span> * Within this znode, the region server maintains a set of WAL replication queues. These queues are<a name="line.66"></a>
-<span class="sourceLineNo">067</span> * represented by child znodes named using there give queue id. For example:<a name="line.67"></a>
-<span class="sourceLineNo">068</span> *<a name="line.68"></a>
-<span class="sourceLineNo">069</span> * &lt;pre&gt;<a name="line.69"></a>
-<span class="sourceLineNo">070</span> * /hbase/replication/rs/hostname.example.org,6020,1234/1<a name="line.70"></a>
-<span class="sourceLineNo">071</span> * /hbase/replication/rs/hostname.example.org,6020,1234/2<a name="line.71"></a>
-<span class="sourceLineNo">072</span> * &lt;/pre&gt;<a name="line.72"></a>
-<span class="sourceLineNo">073</span> *<a name="line.73"></a>
-<span class="sourceLineNo">074</span> * Each queue has one child znode for every WAL that still needs to be replicated. The value of<a name="line.74"></a>
-<span class="sourceLineNo">075</span> * these WAL child znodes is the latest position that has been replicated. This position is updated<a name="line.75"></a>
-<span class="sourceLineNo">076</span> * every time a WAL entry is replicated. For example:<a name="line.76"></a>
-<span class="sourceLineNo">077</span> *<a name="line.77"></a>
-<span class="sourceLineNo">078</span> * &lt;pre&gt;<a name="line.78"></a>
-<span class="sourceLineNo">079</span> * /hbase/replication/rs/hostname.example.org,6020,1234/1/23522342.23422 [VALUE: 254]<a name="line.79"></a>
-<span class="sourceLineNo">080</span> * &lt;/pre&gt;<a name="line.80"></a>
-<span class="sourceLineNo">081</span> */<a name="line.81"></a>
-<span class="sourceLineNo">082</span>@InterfaceAudience.Private<a name="line.82"></a>
-<span class="sourceLineNo">083</span>class ZKReplicationQueueStorage extends ZKReplicationStorageBase<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    implements ReplicationQueueStorage {<a name="line.84"></a>
-<span class="sourceLineNo">085</span><a name="line.85"></a>
-<span class="sourceLineNo">086</span>  private static final Logger LOG = LoggerFactory.getLogger(ZKReplicationQueueStorage.class);<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>  public static final String ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY =<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      "zookeeper.znode.replication.hfile.refs";<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  public static final String ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT = "hfile-refs";<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>  public static final String ZOOKEEPER_ZNODE_REPLICATION_REGIONS_KEY =<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      "zookeeper.znode.replication.regions";<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  public static final String ZOOKEEPER_ZNODE_REPLICATION_REGIONS_DEFAULT = "regions";<a name="line.94"></a>
-<span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>  /**<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   * The name of the znode that contains all replication queues<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   */<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  private final String queuesZNode;<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>  /**<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * The name of the znode that contains queues of hfile references to be replicated<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   */<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  private final String hfileRefsZNode;<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>  @VisibleForTesting<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  final String regionsZNode;<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>  public ZKReplicationQueueStorage(ZKWatcher zookeeper, Configuration conf) {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    super(zookeeper, conf);<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>    String queuesZNodeName = conf.get("zookeeper.znode.replication.rs", "rs");<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    String hfileRefsZNodeName = conf.get(ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY,<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    this.queuesZNode = ZNodePaths.joinZNode(replicationZNode, queuesZNodeName);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    this.hfileRefsZNode = ZNodePaths.joinZNode(replicationZNode, hfileRefsZNodeName);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    this.regionsZNode = ZNodePaths.joinZNode(replicationZNode, conf<a name="line.117"></a>
-<span class="sourceLineNo">118</span>        .get(ZOOKEEPER_ZNODE_REPLICATION_REGIONS_KEY, ZOOKEEPER_ZNODE_REPLICATION_REGIONS_DEFAULT));<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  }<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  private String getRsNode(ServerName serverName) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    return ZNodePaths.joinZNode(queuesZNode, serverName.getServerName());<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  }<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>  private String getQueueNode(ServerName serverName, String queueId) {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    return ZNodePaths.joinZNode(getRsNode(serverName), queueId);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>  private String getFileNode(String queueNode, String fileName) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    return ZNodePaths.joinZNode(queueNode, fileName);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  private String getFileNode(ServerName serverName, String queueId, String fileName) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    return getFileNode(getQueueNode(serverName, queueId), fileName);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  }<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>  /**<a name="line.137"></a>
-<span class="sourceLineNo">138</span>   * &lt;p&gt;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   * Put all regions under /hbase/replication/regions znode will lead to too many children because<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   * of the huge number of regions in real production environment. So here we will distribute the<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * znodes to multiple directories.<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   * &lt;/p&gt;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * &lt;p&gt;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * So the final znode path will be format like this:<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   *<a name="line.145"></a>
-<span class="sourceLineNo">146</span>   * &lt;pre&gt;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * /hbase/replication/regions/dd/04/e76a6966d4ffa908ed0586764767-100<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * &lt;/pre&gt;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   *<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * Here the full encoded region name is dd04e76a6966d4ffa908ed0586764767, and we use the first two<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   * characters 'dd' as the first level directory name, and use the next two characters '04' as the<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   * second level directory name, and the rest part as the prefix of the znode, and the suffix '100'<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   * is the peer id.<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * &lt;/p&gt;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   * @param encodedRegionName the encoded region name.<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   * @param peerId peer id for replication.<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * @return ZNode path to persist the max sequence id that we've pushed for the given region and<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   *         peer.<a name="line.158"></a>
-<span class="sourceLineNo">159</span>   */<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  @VisibleForTesting<a name="line.160"></a>
-<span class="sourceLineNo">161</span>  String getSerialReplicationRegionPeerNode(String encodedRegionName, String peerId) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    if (encodedRegionName == null || encodedRegionName.length() != RegionInfo.MD5_HEX_LENGTH) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      throw new IllegalArgumentException(<a name="line.163"></a>
-<span class="sourceLineNo">164</span>          "Invalid encoded region name: " + encodedRegionName + ", length should be 32.");<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    return new StringBuilder(regionsZNode).append(ZNodePaths.ZNODE_PATH_SEPARATOR)<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        .append(encodedRegionName.substring(0, 2)).append(ZNodePaths.ZNODE_PATH_SEPARATOR)<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        .append(encodedRegionName.substring(2, 4)).append(ZNodePaths.ZNODE_PATH_SEPARATOR)<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        .append(encodedRegionName.substring(4)).append("-").append(peerId).toString();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  @Override<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  public void removeQueue(ServerName serverName, String queueId) throws ReplicationException {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    try {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      ZKUtil.deleteNodeRecursively(zookeeper, getQueueNode(serverName, queueId));<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    } catch (KeeperException e) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      throw new ReplicationException(<a name="line.177"></a>
-<span class="sourceLineNo">178</span>          "Failed to delete queue (serverName=" + serverName + ", queueId=" + queueId + ")", e);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  }<a name="line.180"></a>
-<span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>  @Override<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  public void addWAL(ServerName serverName, String queueId, String fileName)<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      throws ReplicationException {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    try {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      ZKUtil.createWithParents(zookeeper, getFileNode(serverName, queueId, fileName));<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    } catch (KeeperException e) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      throw new ReplicationException("Failed to add wal to queue (serverName=" + serverName<a name="line.188"></a>
-<span class="sourceLineNo">189</span>          + ", queueId=" + queueId + ", fileName=" + fileName + ")", e);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>  @Override<a name="line.193"></a>
-<span class="sourceLineNo">194</span>  public void removeWAL(ServerName serverName, String queueId, String fileName)<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      throws ReplicationException {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    String fileNode = getFileNode(serverName, queueId, fileName);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    try {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      ZKUtil.deleteNode(zookeeper, fileNode);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    } catch (NoNodeException e) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      LOG.warn("{} already deleted when removing log", fileNode);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    } catch (KeeperException e) {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      throw new ReplicationException("Failed to remove wal from queue (serverName=" + serverName +<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        ", queueId=" + queueId + ", fileName=" + fileName + ")", e);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  }<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>  private void addLastSeqIdsToOps(String queueId, Map&lt;String, Long&gt; lastSeqIds,<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      List&lt;ZKUtilOp&gt; listOfOps) throws KeeperException, ReplicationException {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    String peerId = new ReplicationQueueInfo(queueId).getPeerId();<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    for (Entry&lt;String, Long&gt; lastSeqEntry : lastSeqIds.entrySet()) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      String path = getSerialReplicationRegionPeerNode(lastSeqEntry.getKey(), peerId);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      Pair&lt;Long, Integer&gt; p = getLastSequenceIdWithVersion(lastSeqEntry.getKey(), peerId);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      byte[] data = ZKUtil.positionToByteArray(lastSeqEntry.getValue());<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      if (p.getSecond() &lt; 0) { // ZNode does not exist.<a name="line.214"></a>
-<span class="sourceLineNo">215</span>        ZKUtil.createWithParents(zookeeper,<a name="line.215"></a>
-<span class="sourceLineNo">216</span>          path.substring(0, path.lastIndexOf(ZNodePaths.ZNODE_PATH_SEPARATOR)));<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        listOfOps.add(ZKUtilOp.createAndFailSilent(path, data));<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        continue;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      // Perform CAS in a specific version v0 (HBASE-20138)<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      int v0 = p.getSecond();<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      long lastPushedSeqId = p.getFirst();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      if (lastSeqEntry.getValue() &lt;= lastPushedSeqId) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        continue;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      }<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      listOfOps.add(ZKUtilOp.setData(path, data, v0));<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  }<a name="line.228"></a>
-<span class="sourceLineNo">229</span><a name="line.229"></a>
-<span class="sourceLineNo">230</span>  @Override<a name="line.230"></a>
-<span class="sourceLineNo">231</span>  public void setWALPosition(ServerName serverName, String queueId, String fileName, long position,<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      Map&lt;String, Long&gt; lastSeqIds) throws ReplicationException {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    try {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      for (int retry = 0;; retry++) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        List&lt;ZKUtilOp&gt; listOfOps = new ArrayList&lt;&gt;();<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        if (position &gt; 0) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>          listOfOps.add(ZKUtilOp.setData(getFileNode(serverName, queueId, fileName),<a name="line.237"></a>
-<span class="sourceLineNo">238</span>            ZKUtil.positionToByteArray(position)));<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        }<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        // Persist the max sequence id(s) of regions for serial replication atomically.<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        addLastSeqIdsToOps(queueId, lastSeqIds, listOfOps);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>        if (listOfOps.isEmpty()) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>          return;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        }<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        try {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>          ZKUtil.multiOrSequential(zookeeper, listOfOps, false);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>          return;<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        } catch (KeeperException.BadVersionException | KeeperException.NodeExistsException e) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>          LOG.warn(<a name="line.249"></a>
-<span class="sourceLineNo">250</span>            "Bad version(or node exist) when persist the last pushed sequence id to zookeeper storage, "<a name="line.250"></a>
-<span class="sourceLineNo">251</span>                + "Retry = " + retry + ", serverName=" + serverName + ", queueId=" + queueId<a name="line.251"></a>
-<span class="sourceLineNo">252</span>                + ", fileName=" + fileName);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      }<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    } catch (KeeperException e) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      throw new ReplicationException("Failed to set log position (serverName=" + serverName<a name="line.256"></a>
-<span class="sourceLineNo">257</span>          + ", queueId=" + queueId + ", fileName=" + fileName + ", position=" + position + ")", e);<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    }<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  }<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>  /**<a name="line.261"></a>
-<span class="sourceLineNo">262</span>   * Return the {lastPushedSequenceId, ZNodeDataVersion} pair. if ZNodeDataVersion is -1, it means<a name="line.262"></a>
-<span class="sourceLineNo">263</span>   * that the ZNode does not exist.<a name="line.263"></a>
-<span class="sourceLineNo">264</span>   */<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  @VisibleForTesting<a name="line.265"></a>
-<span class="sourceLineNo">266</span>  protected Pair&lt;Long, Integer&gt; getLastSequenceIdWithVersion(String encodedRegionName,<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      String peerId) throws KeeperException {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    Stat stat = new Stat();<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    String path = getSerialReplicationRegionPeerNode(encodedRegionName, peerId);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    byte[] data = ZKUtil.getDataNoWatch(zookeeper, path, stat);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    if (data == null) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      // ZNode does not exist, so just return version -1 to indicate that no node exist.<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      return Pair.newPair(HConstants.NO_SEQNUM, -1);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    try {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      return Pair.newPair(ZKUtil.parseWALPositionFrom(data), stat.getVersion());<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    } catch (DeserializationException de) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      LOG.warn("Failed to parse log position (region=" + encodedRegionName + ", peerId=" + peerId<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          + "), data=" + Bytes.toStringBinary(data));<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    }<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    return Pair.newPair(HConstants.NO_SEQNUM, stat.getVersion());<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  }<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>  @Override<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  public long getLastSequenceId(String encodedRegionName, String peerId)<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      throws ReplicationException {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      return getLastSequenceIdWithVersion(encodedRegionName, peerId).getFirst();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    } catch (KeeperException e) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      throw new ReplicationException("Failed to get last pushed sequence id (encodedRegionName="<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          + encodedRegionName + ", peerId=" + peerId + ")", e);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  @Override<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  public void setLastSequenceIds(String peerId, Map&lt;String, Long&gt; lastSeqIds)<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      throws ReplicationException {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    try {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      // No need CAS and retry here, because it'll call setLastSequenceIds() for disabled peers<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      // only, so no conflict happen.<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      List&lt;ZKUtilOp&gt; listOfOps = new ArrayList&lt;&gt;();<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      for (Entry&lt;String, Long&gt; lastSeqEntry : lastSeqIds.entrySet()) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        String path = getSerialReplicationRegionPeerNode(lastSeqEntry.getKey(), peerId);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        ZKUtil.createWithParents(zookeeper, path);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        listOfOps.add(ZKUtilOp.setData(path, ZKUtil.positionToByteArray(lastSeqEntry.getValue())));<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      if (!listOfOps.isEmpty()) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        ZKUtil.multiOrSequential(zookeeper, listOfOps, true);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      }<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    } catch (KeeperException e) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      throw new ReplicationException("Failed to set last sequence ids, peerId=" + peerId<a name="line.311"></a>
-<span class="sourceLineNo">312</span>          + ", size of lastSeqIds=" + lastSeqIds.size(), e);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>  @Override<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  public void removeLastSequenceIds(String peerId) throws ReplicationException {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    String suffix = "-" + peerId;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    try {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      StringBuilder sb = new StringBuilder(regionsZNode);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      int regionsZNodeLength = regionsZNode.length();<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      int levelOneLength = regionsZNodeLength + 3;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      int levelTwoLength = levelOneLength + 3;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      List&lt;String&gt; levelOneDirs = ZKUtil.listChildrenNoWatch(zookeeper, regionsZNode);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      // it is possible that levelOneDirs is null if we haven't write any last pushed sequence ids<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      // yet, so we need an extra check here.<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      if (CollectionUtils.isEmpty(levelOneDirs)) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        return;<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      }<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      for (String levelOne : levelOneDirs) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        sb.append(ZNodePaths.ZNODE_PATH_SEPARATOR).append(levelOne);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        for (String levelTwo : ZKUtil.listChildrenNoWatch(zookeeper, sb.toString())) {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          sb.append(ZNodePaths.ZNODE_PATH_SEPARATOR).append(levelTwo);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>          for (String znode : ZKUtil.listChildrenNoWatch(zookeeper, sb.toString())) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>            if (znode.endsWith(suffix)) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>              sb.append(ZNodePaths.ZNODE_PATH_SEPARATOR).append(znode);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>              ZKUtil.deleteNode(zookeeper, sb.toString());<a name="line.337"></a>
-<span class="sourceLineNo">338</span>              sb.setLength(levelTwoLength);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>            }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>          }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          sb.setLength(levelOneLength);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        }<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        sb.setLength(regionsZNodeLength);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      }<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    } catch (KeeperException e) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      throw new ReplicationException("Failed to remove all last sequence ids, peerId=" + peerId, e);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>  @Override<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  public long getWALPosition(ServerName serverName, String queueId, String fileName)<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      throws ReplicationException {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    byte[] bytes;<a name="line.353"></a>
+<span class="sourceLineNo">032</span>import java.util.stream.Collectors;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.conf.Configuration;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.fs.Path;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HConstants;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.ServerName;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.util.CollectionUtils;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.zookeeper.KeeperException;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.zookeeper.KeeperException.BadVersionException;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.zookeeper.KeeperException.NoNodeException;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.zookeeper.KeeperException.NodeExistsException;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.zookeeper.KeeperException.NotEmptyException;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.zookeeper.data.Stat;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.slf4j.Logger;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.slf4j.LoggerFactory;<a name="line.54"></a>
+<span class="sourceLineNo">055</span><a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>/**<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * ZK based replication queue storage.<a name="line.59"></a>
+<span class="sourceLineNo">060</span> * &lt;p&gt;<a name="line.60"></a>
+<span class="sourceLineNo">061</span> * The base znode for each regionserver is the regionserver name. For example:<a name="line.61"></a>
+<span class="sourceLineNo">062</span> *<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * &lt;pre&gt;<a name="line.63"></a>
+<span class="sourceLineNo">064</span> * /hbase/replication/rs/hostname.example.org,6020,1234<a name="line.64"></a>
+<span class="sourceLineNo">065</span> * &lt;/pre&gt;<a name="line.65"></a>
+<span class="sourceLineNo">066</span> *<a name="line.66"></a>
+<span class="sourceLineNo">067</span> * Within this znode, the region server maintains a set of WAL replication queues. These queues are<a name="line.67"></a>
+<span class="sourceLineNo">068</span> * represented by child znodes named using there give queue id. For example:<a name="line.68"></a>
+<span class="sourceLineNo">069</span> *<a name="line.69"></a>
+<span class="sourceLineNo">070</span> * &lt;pre&gt;<a name="line.70"></a>
+<span class="sourceLineNo">071</span> * /hbase/replication/rs/hostname.example.org,6020,1234/1<a name="line.71"></a>
+<span class="sourceLineNo">072</span> * /hbase/replication/rs/hostname.example.org,6020,1234/2<a name="line.72"></a>
+<span class="sourceLineNo">073</span> * &lt;/pre&gt;<a name="line.73"></a>
+<span class="sourceLineNo">074</span> *<a name="line.74"></a>
+<span class="sourceLineNo">075</span> * Each queue has one child znode for every WAL that still needs to be replicated. The value of<a name="line.75"></a>
+<span class="sourceLineNo">076</span> * these WAL child znodes is the latest position that has been replicated. This position is updated<a name="line.76"></a>
+<span class="sourceLineNo">077</span> * every time a WAL entry is replicated. For example:<a name="line.77"></a>
+<span class="sourceLineNo">078</span> *<a name="line.78"></a>
+<span class="sourceLineNo">079</span> * &lt;pre&gt;<a name="line.79"></a>
+<span class="sourceLineNo">080</span> * /hbase/replication/rs/hostname.example.org,6020,1234/1/23522342.23422 [VALUE: 254]<a name="line.80"></a>
+<span class="sourceLineNo">081</span> * &lt;/pre&gt;<a name="line.81"></a>
+<span class="sourceLineNo">082</span> */<a name="line.82"></a>
+<span class="sourceLineNo">083</span>@InterfaceAudience.Private<a name="line.83"></a>
+<span class="sourceLineNo">084</span>class ZKReplicationQueueStorage extends ZKReplicationStorageBase<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    implements ReplicationQueueStorage {<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>  private static final Logger LOG = LoggerFactory.getLogger(ZKReplicationQueueStorage.class);<a name="line.87"></a>
+<span class="sourceLineNo">088</span><a name="line.88"></a>
+<span class="sourceLineNo">089</span>  public static final String ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY =<a name="line.89"></a>
+<span class="sourceLineNo">090</span>      "zookeeper.znode.replication.hfile.refs";<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public static final String ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT = "hfile-refs";<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>  public static final String ZOOKEEPER_ZNODE_REPLICATION_REGIONS_KEY =<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      "zookeeper.znode.replication.regions";<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  public static final String ZOOKEEPER_ZNODE_REPLICATION_REGIONS_DEFAULT = "regions";<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  /**<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   * The name of the znode that contains all replication queues<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   */<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  private final String queuesZNode;<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>  /**<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * The name of the znode that contains queues of hfile references to be replicated<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   */<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  private final String hfileRefsZNode;<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  @VisibleForTesting<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  final String regionsZNode;<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>  public ZKReplicationQueueStorage(ZKWatcher zookeeper, Configuration conf) {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    super(zookeeper, conf);<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>    String queuesZNodeName = conf.get("zookeeper.znode.replication.rs", "rs");<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    String hfileRefsZNodeName = conf.get(ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_KEY,<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      ZOOKEEPER_ZNODE_REPLICATION_HFILE_REFS_DEFAULT);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    this.queuesZNode = ZNodePaths.joinZNode(replicationZNode, queuesZNodeName);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    this.hfileRefsZNode = ZNodePaths.joinZNode(replicationZNode, hfileRefsZNodeName);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    this.regionsZNode = ZNodePaths.joinZNode(replicationZNode, conf<a name="line.118"></a>
+<span class="sourceLineNo">119</span>        .get(ZOOKEEPER_ZNODE_REPLICATION_REGIONS_KEY, ZOOKEEPER_ZNODE_REPLICATION_REGIONS_DEFAULT));<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  }<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  private String getRsNode(ServerName serverName) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    return ZNodePaths.joinZNode(queuesZNode, serverName.getServerName());<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
+<span class="sourceLineNo">125</span><a name="line.125"></a>
+<span class="sourceLineNo">126</span>  private String getQueueNode(ServerName serverName, String queueId) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    return ZNodePaths.joinZNode(getRsNode(serverName), queueId);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  }<a name="line.128"></a>
+<span class="sourceLineNo">129</span><a name="line.129"></a>
+<span class="sourceLineNo">130</span>  private String getFileNode(String queueNode, String fileName) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    return ZNodePaths.joinZNode(queueNode, fileName);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span>  private String getFileNode(ServerName serverName, String queueId, String fileName) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    return getFileNode(getQueueNode(serverName, queueId), fileName);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  /**<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * &lt;p&gt;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   * Put all regions under /hbase/replication/regions znode will lead to too many children because<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   * of the huge number of regions in real production environment. So here we will distribute the<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   * znodes to multiple directories.<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   * &lt;/p&gt;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * &lt;p&gt;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * So the final znode path will be format like this:<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   *<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * &lt;pre&gt;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * /hbase/replication/regions/dd/04/e76a6966d4ffa908ed0586764767-100<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * &lt;/pre&gt;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   *<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * Here the full encoded region name is dd04e76a6966d4ffa908ed0586764767, and we use the first two<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * characters 'dd' as the first level directory name, and use the next two characters '04' as the<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * second level directory name, and the rest part as the prefix of the znode, and the suffix '100'<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   * is the peer id.<a name="line.154"></a>
+<span class="sourceLineNo">155</span>   * &lt;/p&gt;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   * @param encodedRegionName the encoded region name.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   * @param peerId peer id for replication.<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   * @return ZNode path to persist the max sequence id that we've pushed for the given region and<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   *         peer.<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   */<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  @VisibleForTesting<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  String getSerialReplicationRegionPeerNode(String encodedRegionName, String peerId) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    if (encodedRegionName == null || encodedRegionName.length() != RegionInfo.MD5_HEX_LENGTH) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      throw new IllegalArgumentException(<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          "Invalid encoded region name: " + encodedRegionName + ", length should be 32.");<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    return new StringBuilder(regionsZNode).append(ZNodePaths.ZNODE_PATH_SEPARATOR)<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        .append(encodedRegionName.substring(0, 2)).append(ZNodePaths.ZNODE_PATH_SEPARATOR)<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        .append(encodedRegionName.substring(2, 4)).append(ZNodePaths.ZNODE_PATH_SEPARATOR)<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        .append(encodedRegionName.substring(4)).append("-").append(peerId).toString();<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
+<span class="sourceLineNo">172</span><a name="line.172"></a>
+<span class="sourceLineNo">173</span>  @Override<a name="line.173"></a>
+<span class="sourceLineNo">174</span>  public void removeQueue(ServerName serverName, String queueId) throws ReplicationException {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    try {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      ZKUtil.deleteNodeRecursively(zookeeper, getQueueNode(serverName, queueId));<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    } catch (KeeperException e) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      throw new ReplicationException(<a name="line.178"></a>
+<span class="sourceLineNo">179</span>          "Failed to delete queue (serverName=" + serverName + ", queueId=" + queueId + ")", e);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  @Override<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  public void addWAL(ServerName serverName, String queueId, String fileName)<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      throws ReplicationException {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    try {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      ZKUtil.createWithParents(zookeeper, getFileNode(serverName, queueId, fileName));<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    } catch (KeeperException e) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      throw new ReplicationException("Failed to add wal to queue (serverName=" + serverName<a name="line.189"></a>
+<span class="sourceLineNo">190</span>          + ", queueId=" + queueId + ", fileName=" + fileName + ")", e);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    }<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
+<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">194</span>  @Override<a name="line.194"></a>
+<span class="sourceLineNo">195</span>  public void removeWAL(ServerName serverName, String queueId, String fileName)<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      throws ReplicationException {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    String fileNode = getFileNode(serverName, queueId, fileName);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    try {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      ZKUtil.deleteNode(zookeeper, fileNode);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    } catch (NoNodeException e) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      LOG.warn("{} already deleted when removing log", fileNode);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    } catch (KeeperException e) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      throw new ReplicationException("Failed to remove wal from queue (serverName=" + serverName +<a name="line.203"></a>
+<span class="sourceLineNo">204</span>        ", queueId=" + queueId + ", fileName=" + fileName + ")", e);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
+<span class="sourceLineNo">206</span>  }<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>  private void addLastSeqIdsToOps(String queueId, Map&lt;String, Long&gt; lastSeqIds,<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      List&lt;ZKUtilOp&gt; listOfOps) throws KeeperException, ReplicationException {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    String peerId = new ReplicationQueueInfo(queueId).getPeerId();<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    for (Entry&lt;String, Long&gt; lastSeqEntry : lastSeqIds.entrySet()) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      String path = getSerialReplicationRegionPeerNode(lastSeqEntry.getKey(), peerId);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      Pair&lt;Long, Integer&gt; p = getLastSequenceIdWithVersion(lastSeqEntry.getKey(), peerId);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      byte[] data = ZKUtil.positionToByteArray(lastSeqEntry.getValue());<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      if (p.getSecond() &lt; 0) { // ZNode does not exist.<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        ZKUtil.createWithParents(zookeeper,<a name="line.216"></a>
+<span class="sourceLineNo">217</span>          path.substring(0, path.lastIndexOf(ZNodePaths.ZNODE_PATH_SEPARATOR)));<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        listOfOps.add(ZKUtilOp.createAndFailSilent(path, data));<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        continue;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      }<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      // Perform CAS in a specific version v0 (HBASE-20138)<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      int v0 = p.getSecond();<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      long lastPushedSeqId = p.getFirst();<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      if (lastSeqEntry.getValue() &lt;= lastPushedSeqId) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        continue;<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      }<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      listOfOps.add(ZKUtilOp.setData(path, data, v0));<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    }<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>  @Override<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  public void setWALPosition(ServerName serverName, String queueId, String fileName, long position,<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      Map&lt;String, Long&gt; lastSeqIds) throws ReplicationException {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    try {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      for (int retry = 0;; retry++) {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        List&lt;ZKUtilOp&gt; listOfOps = new ArrayList&lt;&gt;();<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        if (position &gt; 0) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>          listOfOps.add(ZKUtilOp.setData(getFileNode(serverName, queueId, fileName),<a name="line.238"></a>
+<span class="sourceLineNo">239</span>            ZKUtil.positionToByteArray(position)));<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        }<a name="line.240"></a>
+<span class="sourceLineNo">241</span>        // Persist the max sequence id(s) of regions for serial replication atomically.<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        addLastSeqIdsToOps(queueId, lastSeqIds, listOfOps);<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        if (listOfOps.isEmpty()) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          return;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        }<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        try {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          ZKUtil.multiOrSequential(zookeeper, listOfOps, false);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>          return;<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        } catch (KeeperException.BadVersionException | KeeperException.NodeExistsException e) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>          LOG.warn(<a name="line.250"></a>
+<span class="sourceLineNo">251</span>            "Bad version(or node exist) when persist the last pushed sequence id to zookeeper storage, "<a name="line.251"></a>
+<span class="sourceLineNo">252</span>                + "Retry = " + retry + ", serverName=" + serverName + ", queueId=" + queueId<a name="line.252"></a>
+<span class="sourceLineNo">253</span>                + ", fileName=" + fileName);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        }<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    } catch (KeeperException e) {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      throw new ReplicationException("Failed to set log position (serverName=" + serverName<a name="line.257"></a>
+<span class="sourceLineNo">258</span>          + ", queueId=" + queueId + ", fileName=" + fileName + ", position=" + position + ")", e);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>  /**<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   * Return the {lastPushedSequenceId, ZNodeDataVersion} pair. if ZNodeDataVersion is -1, it means<a name="line.263"></a>
+<span class="sourceLineNo">264</span>   * that the ZNode does not exist.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>   */<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  @VisibleForTesting<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  protected Pair&lt;Long, Integer&gt; getLastSequenceIdWithVersion(String encodedRegionName,<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      String peerId) throws KeeperException {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    Stat stat = new Stat();<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    String path = getSerialReplicationRegionPeerNode(encodedRegionName, peerId);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    byte[] data = ZKUtil.getDataNoWatch(zookeeper, path, stat);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    if (data == null) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      // ZNode does not exist, so just return version -1 to indicate that no node exist.<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      return Pair.newPair(HConstants.NO_SEQNUM, -1);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    try {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      return Pair.newPair(ZKUtil.parseWALPositionFrom(data), stat.getVersion());<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    } catch (DeserializationException de) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      LOG.warn("Failed to parse log position (region=" + encodedRegionName + ", peerId=" + peerId<a name="line.279"></a>
+<span class="sourceLineNo">280</span>          + "), data=" + Bytes.toStringBinary(data));<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    return Pair.newPair(HConstants.NO_SEQNUM, stat.getVersion());<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  }<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>  @Override<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  public long getLastSequenceId(String encodedRegionName, String peerId)<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      throws ReplicationException {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    try {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      return getLastSequenceIdWithVersion(encodedRegionName, peerId).getFirst();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    } catch (KeeperException e) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      throw new ReplicationException("Failed to get last pushed sequence id (encodedRegionName="<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          + encodedRegionName + ", peerId=" + peerId + ")", e);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    }<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  }<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  @Override<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  public void setLastSequenceIds(String peerId, Map&lt;String, Long&gt; lastSeqIds)<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      throws ReplicationException {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    try {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      // No need CAS and retry here, because it'll call setLastSequenceIds() for disabled peers<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      // only, so no conflict happen.<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      List&lt;ZKUtilOp&gt; listOfOps = new ArrayList&lt;&gt;();<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      for (Entry&lt;String, Long&gt; lastSeqEntry : lastSeqIds.entrySet()) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        String path = getSerialReplicationRegionPeerNode(lastSeqEntry.getKey(), peerId);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        ZKUtil.createWithParents(zookeeper, path);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        listOfOps.add(ZKUtilOp.setData(path, ZKUtil.positionToByteArray(lastSeqEntry.getValue())));<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      }<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      if (!listOfOps.isEmpty()) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        ZKUtil.multiOrSequential(zookeeper, listOfOps, true);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    } catch (KeeperException e) {<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      throw new ReplicationException("Failed to set last sequence ids, peerId=" + peerId<a name="line.312"></a>
+<span class="sourceLineNo">313</span>          + ", size of lastSeqIds=" + lastSeqIds.size(), e);<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  }<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span>  @Override<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public void removeLastSequenceIds(String peerId) throws ReplicationException {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    String suffix = "-" + peerId;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    try {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      StringBuilder sb = new StringBuilder(regionsZNode);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      int regionsZNodeLength = regionsZNode.length();<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      int levelOneLength = regionsZNodeLength + 3;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      int levelTwoLength = levelOneLength + 3;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      List&lt;String&gt; levelOneDirs = ZKUtil.listChildrenNoWatch(zookeeper, regionsZNode);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      // it is possible that levelOneDirs is null if we haven't write any last pushed sequence ids<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      // yet, so we need an extra check here.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      if (CollectionUtils.isEmpty(levelOneDirs)) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        return;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      }<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      for (String levelOne : levelOneDirs) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        sb.append(ZNodePaths.ZNODE_PATH_SEPARATOR).append(levelOne);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>        for (String levelTwo : ZKUtil.listChildrenNoWatch(zookeeper, sb.toString())) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>          sb.append(ZNodePaths.ZNODE_PATH_SEPARATOR).append(levelTwo);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>          for (String znode : ZKUtil.listChildrenNoWatch(zookeeper, sb.toString())) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>            if (znode.endsWith(suffix)) {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>              sb.append(ZNodePaths.ZNODE_PATH_SEPARATOR).append(znode);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>              ZKUtil.deleteNode(zookeeper, sb.toString());<a name="line.338"></a>
+<span class="sourceLineNo">339</span>              sb.setLength(levelTwoLength);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>            }<a name="line.340"></a>
+<span class="sourceLineNo">341</span>          }<a name="line.341"></a>
+<span class="sourceLineNo">342</span>          sb.setLength(levelOneLength);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>        }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        sb.setLength(regionsZNodeLength);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    } catch (KeeperException e) {<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      throw new ReplicationException("Failed to remove all last sequence ids, peerId=" + peerId, e);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    }<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  }<a name="line.349"></a>
+<span class="sourceLineNo">350</span><a name="line.350"></a>
+<span class="sourceLineNo">351</span>  @Override<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  public void removeLastSequenceIds(String peerId, List&lt;String&gt; encodedRegionNames)<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      throws ReplicationException {<a name="line.353"></a>
 <span class="sourceLineNo">354</span>    try {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      bytes = ZKUtil.getData(zookeeper, getFileNode(serverName, queueId, fileName));<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    } catch (KeeperException | InterruptedException e) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      throw new ReplicationException("Failed to get log position (serverName=" + serverName +<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        ", queueId=" + queueId + ", fileName=" + fileName + ")", e);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    try {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      return ZKUtil.parseWALPositionFrom(bytes);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    } catch (DeserializationException de) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      LOG.warn("Failed parse log position (serverName={}, queueId={}, fileName={})",<a name="line.363"></a>
-<span class="sourceLineNo">364</span>          serverName, queueId, fileName);<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    }<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    // if we can not parse the position, start at the beginning of the wal file again<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    return 0;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  @Override<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  public Pair&lt;String, SortedSet&lt;String&gt;&gt; claimQueue(ServerName sourceServerName, String queueId,<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      ServerName destServerName) throws ReplicationException {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    LOG.info("Atomically moving {}/{}'s WALs to {}", sourceServerName, queueId, destServerName);<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    try {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      ZKUtil.createWithParents(zookeeper, getRsNode(destServerName));<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    } catch (KeeperException e) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      throw new ReplicationException(<a name="line.377"></a>
-<span class="sourceLineNo">378</span>          "Claim queue queueId=" + queueId + " from " + sourceServerName + " to " + destServerName +<a name="line.378"></a>
-<span class="sourceLineNo">379</span>            " failed when creating the node for " + destServerName,<a name="line.379"></a>
-<span class="sourceLineNo">380</span>          e);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    try {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      String oldQueueNode = getQueueNode(sourceServerName, queueId);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      List&lt;String&gt; wals = ZKUtil.listChildrenNoWatch(zookeeper, oldQueueNode);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      String newQueueId = queueId + "-" + sourceServerName;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      if (CollectionUtils.isEmpty(wals)) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        ZKUtil.deleteNodeFailSilent(zookeeper, oldQueueNode);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        LOG.info("Removed empty {}/{}", sourceServerName, queueId);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>        return new Pair&lt;&gt;(newQueueId, Collections.emptySortedSet());<a name="line.389"></a>
-<span class="sourceLineNo">390</span>      }<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      String newQueueNode = getQueueNode(destServerName, newQueueId);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      List&lt;ZKUtilOp&gt; listOfOps = new ArrayList&lt;&gt;();<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      SortedSet&lt;String&gt; logQueue = new TreeSet&lt;&gt;();<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      // create the new cluster znode<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      listOfOps.add(ZKUtilOp.createAndFailSilent(newQueueNode, HConstants.EMPTY_BYTE_ARRAY));<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      // get the offset of the logs and set it to new znodes<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      for (String wal : wals) {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        String oldWalNode = getFileNode(oldQueueNode, wal);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        byte[] logOffset = ZKUtil.getData(this.zookeeper, oldWalNode);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        LOG.debug("Creating {} with data {}", wal, Bytes.toStringBinary(logOffset));<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        String newWalNode = getFileNode(newQueueNode, wal);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>        listOfOps.add(ZKUtilOp.createAndFailSilent(newWalNode, logOffset));<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        listOfOps.add(ZKUtilOp.deleteNodeFailSilent(oldWalNode));<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        logQueue.add(wal);<a name="line.404"></a>
+<span class="sourceLineNo">355</span>      List&lt;ZKUtilOp&gt; listOfOps =<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        encodedRegionNames.stream().map(n -&gt; getSerialReplicationRegionPeerNode(n, peerId))<a name="line.356"></a>
+<span class="sourceLineNo">357</span>          .map(ZKUtilOp::deleteNodeFailSilent).collect(Collectors.toList());<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      ZKUtil.multiOrSequential(zookeeper, listOfOps, true);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    } catch (KeeperException e) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      throw new ReplicationException("Failed to remove last sequence ids, peerId=" + peerId +<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        ", encodedRegionNames.size=" + encodedRegionNames.size(), e);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>  }<a name="line.363"></a>
+<span class="sourceLineNo">364</span><a name="line.364"></a>
+<span class="sourceLineNo">365</span>  @Override<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  public long getWALPosition(ServerName serverName, String queueId, String fileName)<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      throws ReplicationException {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    byte[] bytes;<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    try {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      bytes = ZKUtil.getData(zookeeper, getFileNode(serverName, queueId, fileName));<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    } catch (KeeperException | InterruptedException e) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      throw new ReplicationException("Failed to get log position (serverName=" + serverName +<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        ", queueId=" + queueId + ", fileName=" + fileName + ")", e);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    }<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    try {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      return ZKUtil.parseWALPositionFrom(bytes);<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    } catch (DeserializationException de) {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      LOG.warn("Failed parse log position (serverName={}, queueId={}, fileName={})",<a name="line.378"></a>
+<span class="sourceLineNo">379</span>          serverName, queueId, fileName);<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    }<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    // if we can not parse the position, start at the beginning of the wal file again<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return 0;<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>  @Override<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  public Pair&lt;String, SortedSet&lt;String&gt;&gt; claimQueue(ServerName sourceServerName, String queueId,<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      ServerName destServerName) throws ReplicationException {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    LOG.info("Atomically moving {}/{}'s WALs to {}", sourceServerName, queueId, destServerName);<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    try {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      ZKUtil.createWithParents(zookeeper, getRsNode(destServerName));<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    } catch (KeeperException e) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      throw new ReplicationException(<a name="line.392"></a>
+<span class="sourceLineNo">393</span>          "Claim queue queueId=" + queueId + " from " + sourceServerName + " to " + destServerName +<a name="line.393"></a>
+<span class="sourceLineNo">394</span>            " failed when creating the node for " + destServerName,<a name="line.394"></a>
+<span class="sourceLineNo">395</span>          e);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    }<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    try {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      String oldQueueNode = getQueueNode(sourceServerName, queueId);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      List&lt;String&gt; wals = ZKUtil.listChildrenNoWatch(zookeeper, oldQueueNode);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      String newQueueId = queueId + "-" + sourceServerName;<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      if (CollectionUtils.isEmpty(wals)) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        ZKUtil.deleteNodeFailSilent(zookeeper, oldQueueNode);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>        LOG.info("Removed empty {}/{}", sourceServerName, queueId);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        return new Pair&lt;&gt;(newQueueId, Collections.emptySortedSet());<a name="line.404"></a>
 <span class="sourceLineNo">405</span>      }<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      // add delete op for peer<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      listOfOps.add(ZKUtilOp.deleteNodeFailSilent(oldQueueNode));<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>      LOG.trace("The multi list size is {}", listOfOps.size());<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      ZKUtil.multiOrSequential(zookeeper, listOfOps, false);<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>      LOG.info("Atomically moved {}/{}'s WALs to {}", sourceServerName, queueId, destServerName);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      return new Pair&lt;&gt;(newQueueId, logQueue);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    } catch (NoNodeException | NodeExistsException | NotEmptyException | BadVersionException e) {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      // Multi call failed; it looks like some other regionserver took away the logs.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      // These exceptions mean that zk tells us the request can not be execute so it is safe to just<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      // return a null. For other types of exception should be thrown out to notify the upper layer.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      LOG.info("Claim queue queueId={} from {} to {} failed with {}, someone else took the log?",<a name="line.418"></a>
-<span class="sourceLineNo">419</span>          queueId,sourceServerName, destServerName, e.toString());<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      return null;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    } catch (KeeperException | InterruptedException e) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      throw new ReplicationException("Claim queue queueId=" + queueId + " from " +<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        sourceServerName + " to " + destServerName + " failed", e);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    }<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
+<span class="sourceLineNo">406</span>      String newQueueNode = getQueueNode(destServerName, newQueueId);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      List&lt;ZKUtilOp&gt; listOfOps = new ArrayList&lt;&gt;();<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      SortedSet&lt;String&gt; logQueue = new TreeSet&lt;&gt;();<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      // create the new cluster znode<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      listOfOps.add(ZKUtilOp.createAndFailSilent(newQueueNode, HConstants.EMPTY_BYTE_ARRAY));<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      // get the offset of the logs and set it to new znodes<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      for (String wal : wals) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        String oldWalNode = getFileNode(oldQueueNode, wal);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        byte[] logOffset = ZKUtil.getData(this.zookeeper, oldWalNode);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        LOG.debug("Creating {} with data {}", wal, Bytes.toStringBinary(logOffset));<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        String newWalNode = getFileNode(newQueueNode, wal);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        listOfOps.add(ZKUtilOp.createAndFailSilent(newWalNode, logOffset));<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        listOfOps.add(ZKUtilOp.deleteNodeFailSilent(oldWalNode));<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        logQueue.add(wal);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      }<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      // add delete op for peer<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      listOfOps.add(ZKUtilOp.deleteNodeFailSilent(oldQueueNode));<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>      LOG.trace("The multi list size is {}", listOfOps.size());<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      ZKUtil.multiOrSequential(zookeeper, listOfOps, false);<a name="line.425"></a>
 <span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>  @Override<a name="line.427"></a>
-<span class="sourceLineNo">428</span>  public void removeReplicatorIfQueueIsEmpty(ServerName serverName) throws ReplicationException {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    try {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      ZKUtil.deleteNodeFailSilent(zookeeper, getRsNode(serverName));<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    } catch (NotEmptyException e) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      // keep silence to avoid logging too much.<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    } catch (KeeperException e) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      throw new ReplicationException("Failed to remove replicator for " + serverName, e);<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    }<a name="line.435"></a>
-<span class="sourceLineNo">436</span>  }<a name="line.436"></a>
-<span class="sourceLineNo">437</span><a name="line.437"></a>
-<span class="sourceLineNo">438</span>  private List&lt;ServerName&gt; getListOfReplicators0() throws KeeperException {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    return nullToEmpty(ZKUtil.listChildrenNoWatch(zookeeper, queuesZNode)).stream()<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        .map(ServerName::parseServerName).collect(toList());<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
-<span class="sourceLineNo">442</span><a name="line.442"></a>
-<span class="sourceLineNo">443</span>  @Override<a name="line.443"></a>
-<span class="sourceLineNo">444</span>  public List&lt;ServerName&gt; getListOfReplicators() throws ReplicationException {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    try {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      return getListOfReplicators0();<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    } catch (KeeperException e) {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      throw new ReplicationException("Failed to get list of replicators", e);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  private List&lt;String&gt; getWALsInQueue0(ServerName serverName, String queueId)<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      throws KeeperException {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    return nullToEmpty(ZKUtil.listChildrenNoWatch(zookeeper, getQueueNode(serverName, queueId)));<a name="line.454"></a>
-<span class="sourceLineNo">455</span>  }<a name="line.455"></a>
-<span class="sourceLineNo">456</span><a name="line.456"></a>
-<span class="sourceLineNo">457</span>  @Override<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  public List&lt;String&gt; getWALsInQueue(ServerName serverName, String queueId)<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      throws ReplicationException {<a name="line.459"></a>
+<span class="sourceLineNo">427</span>      LOG.info("Atomically moved {}/{}'s WALs to {}", sourceServerName, queueId, destServerName);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      return new Pair&lt;&gt;(newQueueId, logQueue);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    } catch (NoNodeException | NodeExistsException | NotEmptyException | BadVersionException e) {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      // Multi call failed; it looks like some other regionserver took away the logs.<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      // These exceptions mean that zk tells us the request can not be execute so it is safe to just<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      // return a null. For other types of exception should be thrown out to notify the upper layer.<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      LOG.info("Claim queue queueId={} from {} to {} failed with {}, someone else took the log?",<a name="line.433"></a>
+<span class="sourceLineNo">434</span>          queueId,sourceServerName, destServerName, e.toString());<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      return null;<a name="line.435"></a>
+<span class="sourceLineNo">436</span>    } catch (KeeperException | InterruptedException e) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      throw new ReplicationException("Claim queue queueId=" + queueId + " from " +<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        sourceServerName + " to " + destServerName + " failed", e);<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
+<span class="sourceLineNo">441</span><a name="line.441"></a>
+<span class="sourceLineNo">442</span>  @Override<a name="line.442"></a>
+<span class="sourceLineNo">443</span>  public void removeReplicatorIfQueueIsEmpty(ServerName serverName) throws ReplicationException {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    try {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      ZKUtil.deleteNodeFailSilent(zookeep

<TRUNCATED>

[14/26] hbase-site git commit: Published site at 1e56938757d2958631ac1ea07387eaa61997d84a.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/b707139a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CloseableVisitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CloseableVisitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CloseableVisitor.html
index 6007f27..4ce6735 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CloseableVisitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/MetaTableAccessor.CloseableVisitor.html
@@ -65,716 +65,716 @@
 <span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Table;<a name="line.57"></a>
 <span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.58"></a>
 <span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsResponse;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.slf4j.Logger;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.slf4j.LoggerFactory;<a name="line.77"></a>
-<span class="sourceLineNo">078</span><a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.79"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.master.RegionState.State;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsResponse;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.util.PairOfSameType;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.slf4j.Logger;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.slf4j.LoggerFactory;<a name="line.79"></a>
 <span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>/**<a name="line.81"></a>
-<span class="sourceLineNo">082</span> * &lt;p&gt;<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * Read/write operations on region and assignment information store in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * &lt;/p&gt;<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * &lt;p&gt;<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * Some of the methods of this class take ZooKeeperWatcher as a param. The only reason for this is<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * because when used on client-side (like from HBaseAdmin), we want to use short-living connection<a name="line.87"></a>
-<span class="sourceLineNo">088</span> * (opened before each operation, closed right after), while when used on HM or HRS (like in<a name="line.88"></a>
-<span class="sourceLineNo">089</span> * AssignmentManager) we want permanent connection.<a name="line.89"></a>
-<span class="sourceLineNo">090</span> * &lt;/p&gt;<a name="line.90"></a>
-<span class="sourceLineNo">091</span> * &lt;p&gt;<a name="line.91"></a>
-<span class="sourceLineNo">092</span> * HBASE-10070 adds a replicaId to HRI, meaning more than one HRI can be defined for the same table<a name="line.92"></a>
-<span class="sourceLineNo">093</span> * range (table, startKey, endKey). For every range, there will be at least one HRI defined which is<a name="line.93"></a>
-<span class="sourceLineNo">094</span> * called default replica.<a name="line.94"></a>
-<span class="sourceLineNo">095</span> * &lt;/p&gt;<a name="line.95"></a>
-<span class="sourceLineNo">096</span> * &lt;p&gt;<a name="line.96"></a>
-<span class="sourceLineNo">097</span> * Meta layout (as of 0.98 + HBASE-10070) is like:<a name="line.97"></a>
-<span class="sourceLineNo">098</span> *<a name="line.98"></a>
-<span class="sourceLineNo">099</span> * &lt;pre&gt;<a name="line.99"></a>
-<span class="sourceLineNo">100</span> * For each table there is single row in column family 'table' formatted:<a name="line.100"></a>
-<span class="sourceLineNo">101</span> * &amp;lt;tableName&amp;gt; including namespace and columns are:<a name="line.101"></a>
-<span class="sourceLineNo">102</span> * table: state             =&gt; contains table state<a name="line.102"></a>
-<span class="sourceLineNo">103</span> *<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * For each table range, there is a single row, formatted like:<a name="line.104"></a>
-<span class="sourceLineNo">105</span> * &amp;lt;tableName&amp;gt;,&amp;lt;startKey&amp;gt;,&amp;lt;regionId&amp;gt;,&amp;lt;encodedRegionName&amp;gt;.<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * This row corresponds to the regionName of the default region replica.<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * Columns are:<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * info:regioninfo         =&gt; contains serialized HRI for the default region replica<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * info:server             =&gt; contains hostname:port (in string form) for the server hosting<a name="line.109"></a>
-<span class="sourceLineNo">110</span> *                            the default regionInfo replica<a name="line.110"></a>
-<span class="sourceLineNo">111</span> * info:server_&amp;lt;replicaId&amp;gt =&gt; contains hostname:port (in string form) for the server hosting<a name="line.111"></a>
-<span class="sourceLineNo">112</span> *                                 the regionInfo replica with replicaId<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * info:serverstartcode    =&gt; contains server start code (in binary long form) for the server<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *                            hosting the default regionInfo replica<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * info:serverstartcode_&amp;lt;replicaId&amp;gt =&gt; contains server start code (in binary long form) for<a name="line.115"></a>
-<span class="sourceLineNo">116</span> *                                          the server hosting the regionInfo replica with<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *                                          replicaId<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * info:seqnumDuringOpen   =&gt; contains seqNum (in binary long form) for the region at the time<a name="line.118"></a>
-<span class="sourceLineNo">119</span> *                             the server opened the region with default replicaId<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * info:seqnumDuringOpen_&amp;lt;replicaId&amp;gt =&gt; contains seqNum (in binary long form) for the region<a name="line.120"></a>
-<span class="sourceLineNo">121</span> *                                           at the time the server opened the region with<a name="line.121"></a>
-<span class="sourceLineNo">122</span> *                                           replicaId<a name="line.122"></a>
-<span class="sourceLineNo">123</span> * info:splitA             =&gt; contains a serialized HRI for the first daughter region if the<a name="line.123"></a>
-<span class="sourceLineNo">124</span> *                             region is split<a name="line.124"></a>
-<span class="sourceLineNo">125</span> * info:splitB             =&gt; contains a serialized HRI for the second daughter region if the<a name="line.125"></a>
+<span class="sourceLineNo">081</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>/**<a name="line.83"></a>
+<span class="sourceLineNo">084</span> * &lt;p&gt;<a name="line.84"></a>
+<span class="sourceLineNo">085</span> * Read/write operations on region and assignment information store in &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.85"></a>
+<span class="sourceLineNo">086</span> * &lt;/p&gt;<a name="line.86"></a>
+<span class="sourceLineNo">087</span> * &lt;p&gt;<a name="line.87"></a>
+<span class="sourceLineNo">088</span> * Some of the methods of this class take ZooKeeperWatcher as a param. The only reason for this is<a name="line.88"></a>
+<span class="sourceLineNo">089</span> * because when used on client-side (like from HBaseAdmin), we want to use short-living connection<a name="line.89"></a>
+<span class="sourceLineNo">090</span> * (opened before each operation, closed right after), while when used on HM or HRS (like in<a name="line.90"></a>
+<span class="sourceLineNo">091</span> * AssignmentManager) we want permanent connection.<a name="line.91"></a>
+<span class="sourceLineNo">092</span> * &lt;/p&gt;<a name="line.92"></a>
+<span class="sourceLineNo">093</span> * &lt;p&gt;<a name="line.93"></a>
+<span class="sourceLineNo">094</span> * HBASE-10070 adds a replicaId to HRI, meaning more than one HRI can be defined for the same table<a name="line.94"></a>
+<span class="sourceLineNo">095</span> * range (table, startKey, endKey). For every range, there will be at least one HRI defined which is<a name="line.95"></a>
+<span class="sourceLineNo">096</span> * called default replica.<a name="line.96"></a>
+<span class="sourceLineNo">097</span> * &lt;/p&gt;<a name="line.97"></a>
+<span class="sourceLineNo">098</span> * &lt;p&gt;<a name="line.98"></a>
+<span class="sourceLineNo">099</span> * Meta layout (as of 0.98 + HBASE-10070) is like:<a name="line.99"></a>
+<span class="sourceLineNo">100</span> *<a name="line.100"></a>
+<span class="sourceLineNo">101</span> * &lt;pre&gt;<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * For each table there is single row in column family 'table' formatted:<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * &amp;lt;tableName&amp;gt; including namespace and columns are:<a name="line.103"></a>
+<span class="sourceLineNo">104</span> * table: state             =&gt; contains table state<a name="line.104"></a>
+<span class="sourceLineNo">105</span> *<a name="line.105"></a>
+<span class="sourceLineNo">106</span> * For each table range, there is a single row, formatted like:<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * &amp;lt;tableName&amp;gt;,&amp;lt;startKey&amp;gt;,&amp;lt;regionId&amp;gt;,&amp;lt;encodedRegionName&amp;gt;.<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * This row corresponds to the regionName of the default region replica.<a name="line.108"></a>
+<span class="sourceLineNo">109</span> * Columns are:<a name="line.109"></a>
+<span class="sourceLineNo">110</span> * info:regioninfo         =&gt; contains serialized HRI for the default region replica<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * info:server             =&gt; contains hostname:port (in string form) for the server hosting<a name="line.111"></a>
+<span class="sourceLineNo">112</span> *                            the default regionInfo replica<a name="line.112"></a>
+<span class="sourceLineNo">113</span> * info:server_&amp;lt;replicaId&amp;gt =&gt; contains hostname:port (in string form) for the server hosting<a name="line.113"></a>
+<span class="sourceLineNo">114</span> *                                 the regionInfo replica with replicaId<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * info:serverstartcode    =&gt; contains server start code (in binary long form) for the server<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *                            hosting the default regionInfo replica<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * info:serverstartcode_&amp;lt;replicaId&amp;gt =&gt; contains server start code (in binary long form) for<a name="line.117"></a>
+<span class="sourceLineNo">118</span> *                                          the server hosting the regionInfo replica with<a name="line.118"></a>
+<span class="sourceLineNo">119</span> *                                          replicaId<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * info:seqnumDuringOpen   =&gt; contains seqNum (in binary long form) for the region at the time<a name="line.120"></a>
+<span class="sourceLineNo">121</span> *                             the server opened the region with default replicaId<a name="line.121"></a>
+<span class="sourceLineNo">122</span> * info:seqnumDuringOpen_&amp;lt;replicaId&amp;gt =&gt; contains seqNum (in binary long form) for the region<a name="line.122"></a>
+<span class="sourceLineNo">123</span> *                                           at the time the server opened the region with<a name="line.123"></a>
+<span class="sourceLineNo">124</span> *                                           replicaId<a name="line.124"></a>
+<span class="sourceLineNo">125</span> * info:splitA             =&gt; contains a serialized HRI for the first daughter region if the<a name="line.125"></a>
 <span class="sourceLineNo">126</span> *                             region is split<a name="line.126"></a>
-<span class="sourceLineNo">127</span> * info:mergeA             =&gt; contains a serialized HRI for the first parent region if the<a name="line.127"></a>
-<span class="sourceLineNo">128</span> *                             region is the result of a merge<a name="line.128"></a>
-<span class="sourceLineNo">129</span> * info:mergeB             =&gt; contains a serialized HRI for the second parent region if the<a name="line.129"></a>
+<span class="sourceLineNo">127</span> * info:splitB             =&gt; contains a serialized HRI for the second daughter region if the<a name="line.127"></a>
+<span class="sourceLineNo">128</span> *                             region is split<a name="line.128"></a>
+<span class="sourceLineNo">129</span> * info:mergeA             =&gt; contains a serialized HRI for the first parent region if the<a name="line.129"></a>
 <span class="sourceLineNo">130</span> *                             region is the result of a merge<a name="line.130"></a>
-<span class="sourceLineNo">131</span> * &lt;/pre&gt;<a name="line.131"></a>
-<span class="sourceLineNo">132</span> * &lt;/p&gt;<a name="line.132"></a>
-<span class="sourceLineNo">133</span> * &lt;p&gt;<a name="line.133"></a>
-<span class="sourceLineNo">134</span> * The actual layout of meta should be encapsulated inside MetaTableAccessor methods, and should not<a name="line.134"></a>
-<span class="sourceLineNo">135</span> * leak out of it (through Result objects, etc)<a name="line.135"></a>
-<span class="sourceLineNo">136</span> * &lt;/p&gt;<a name="line.136"></a>
-<span class="sourceLineNo">137</span> */<a name="line.137"></a>
-<span class="sourceLineNo">138</span>@InterfaceAudience.Private<a name="line.138"></a>
-<span class="sourceLineNo">139</span>public class MetaTableAccessor {<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private static final Logger LOG = LoggerFactory.getLogger(MetaTableAccessor.class);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private static final Logger METALOG = LoggerFactory.getLogger("org.apache.hadoop.hbase.META");<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private static final byte[] META_REGION_PREFIX;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  static {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    // Copy the prefix from FIRST_META_REGIONINFO into META_REGION_PREFIX.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    // FIRST_META_REGIONINFO == 'hbase:meta,,1'.  META_REGION_PREFIX == 'hbase:meta,'<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    int len = RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName().length - 2;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    META_REGION_PREFIX = new byte [len];<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    System.arraycopy(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName(), 0,<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      META_REGION_PREFIX, 0, len);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>  @VisibleForTesting<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  public static final byte[] REPLICATION_PARENT_QUALIFIER = Bytes.toBytes("parent");<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>  private static final byte ESCAPE_BYTE = (byte) 0xFF;<a name="line.157"></a>
+<span class="sourceLineNo">131</span> * info:mergeB             =&gt; contains a serialized HRI for the second parent region if the<a name="line.131"></a>
+<span class="sourceLineNo">132</span> *                             region is the result of a merge<a name="line.132"></a>
+<span class="sourceLineNo">133</span> * &lt;/pre&gt;<a name="line.133"></a>
+<span class="sourceLineNo">134</span> * &lt;/p&gt;<a name="line.134"></a>
+<span class="sourceLineNo">135</span> * &lt;p&gt;<a name="line.135"></a>
+<span class="sourceLineNo">136</span> * The actual layout of meta should be encapsulated inside MetaTableAccessor methods, and should not<a name="line.136"></a>
+<span class="sourceLineNo">137</span> * leak out of it (through Result objects, etc)<a name="line.137"></a>
+<span class="sourceLineNo">138</span> * &lt;/p&gt;<a name="line.138"></a>
+<span class="sourceLineNo">139</span> */<a name="line.139"></a>
+<span class="sourceLineNo">140</span>@InterfaceAudience.Private<a name="line.140"></a>
+<span class="sourceLineNo">141</span>public class MetaTableAccessor {<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  private static final Logger LOG = LoggerFactory.getLogger(MetaTableAccessor.class);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private static final Logger METALOG = LoggerFactory.getLogger("org.apache.hadoop.hbase.META");<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private static final byte[] META_REGION_PREFIX;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  static {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    // Copy the prefix from FIRST_META_REGIONINFO into META_REGION_PREFIX.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    // FIRST_META_REGIONINFO == 'hbase:meta,,1'.  META_REGION_PREFIX == 'hbase:meta,'<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    int len = RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName().length - 2;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    META_REGION_PREFIX = new byte [len];<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    System.arraycopy(RegionInfoBuilder.FIRST_META_REGIONINFO.getRegionName(), 0,<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      META_REGION_PREFIX, 0, len);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  }<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span>  @VisibleForTesting<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  public static final byte[] REPLICATION_PARENT_QUALIFIER = Bytes.toBytes("parent");<a name="line.157"></a>
 <span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  private static final byte SEPARATED_BYTE = 0x00;<a name="line.159"></a>
+<span class="sourceLineNo">159</span>  private static final byte ESCAPE_BYTE = (byte) 0xFF;<a name="line.159"></a>
 <span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  /**<a name="line.161"></a>
-<span class="sourceLineNo">162</span>   * Lists all of the table regions currently in META.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * Deprecated, keep there until some test use this.<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * @param connection what we will use<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * @param tableName table to list<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * @return Map of all user-space regions to servers<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * @deprecated use {@link #getTableRegionsAndLocations}, region can have multiple locations<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   */<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  @Deprecated<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  public static NavigableMap&lt;RegionInfo, ServerName&gt; allTableRegions(<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      Connection connection, final TableName tableName) throws IOException {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    final NavigableMap&lt;RegionInfo, ServerName&gt; regions = new TreeMap&lt;&gt;();<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    Visitor visitor = new TableVisitorBase(tableName) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      @Override<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      public boolean visitInternal(Result result) throws IOException {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>        RegionLocations locations = getRegionLocations(result);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>        if (locations == null) return true;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        for (HRegionLocation loc : locations.getRegionLocations()) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>          if (loc != null) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>            RegionInfo regionInfo = loc.getRegionInfo();<a name="line.180"></a>
-<span class="sourceLineNo">181</span>            regions.put(regionInfo, loc.getServerName());<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>        return true;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    };<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    scanMetaForTableRegions(connection, visitor, tableName);<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    return regions;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>  @InterfaceAudience.Private<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  public enum QueryType {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    ALL(HConstants.TABLE_FAMILY, HConstants.CATALOG_FAMILY),<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    REGION(HConstants.CATALOG_FAMILY),<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    TABLE(HConstants.TABLE_FAMILY),<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    REPLICATION(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>    private final byte[][] families;<a name="line.198"></a>
+<span class="sourceLineNo">161</span>  private static final byte SEPARATED_BYTE = 0x00;<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  /**<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   * Lists all of the table regions currently in META.<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * Deprecated, keep there until some test use this.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * @param connection what we will use<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * @param tableName table to list<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * @return Map of all user-space regions to servers<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * @deprecated use {@link #getTableRegionsAndLocations}, region can have multiple locations<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  @Deprecated<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  public static NavigableMap&lt;RegionInfo, ServerName&gt; allTableRegions(<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      Connection connection, final TableName tableName) throws IOException {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    final NavigableMap&lt;RegionInfo, ServerName&gt; regions = new TreeMap&lt;&gt;();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    Visitor visitor = new TableVisitorBase(tableName) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      @Override<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      public boolean visitInternal(Result result) throws IOException {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        RegionLocations locations = getRegionLocations(result);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        if (locations == null) return true;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        for (HRegionLocation loc : locations.getRegionLocations()) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          if (loc != null) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            RegionInfo regionInfo = loc.getRegionInfo();<a name="line.182"></a>
+<span class="sourceLineNo">183</span>            regions.put(regionInfo, loc.getServerName());<a name="line.183"></a>
+<span class="sourceLineNo">184</span>          }<a name="line.184"></a>
+<span class="sourceLineNo">185</span>        }<a name="line.185"></a>
+<span class="sourceLineNo">186</span>        return true;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    };<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    scanMetaForTableRegions(connection, visitor, tableName);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    return regions;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  @InterfaceAudience.Private<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  public enum QueryType {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    ALL(HConstants.TABLE_FAMILY, HConstants.CATALOG_FAMILY),<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    REGION(HConstants.CATALOG_FAMILY),<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    TABLE(HConstants.TABLE_FAMILY),<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    REPLICATION(HConstants.REPLICATION_BARRIER_FAMILY);<a name="line.198"></a>
 <span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>    QueryType(byte[]... families) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      this.families = families;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span>    byte[][] getFamilies() {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      return this.families;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private static final Pattern SERVER_COLUMN_PATTERN<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    = Pattern.compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>  ////////////////////////<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  // Reading operations //<a name="line.217"></a>
+<span class="sourceLineNo">200</span>    private final byte[][] families;<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    QueryType(byte[]... families) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      this.families = families;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>    byte[][] getFamilies() {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      return this.families;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    }<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>  /** The delimiter for meta columns for replicaIds &amp;gt; 0 */<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  protected static final char META_REPLICA_ID_DELIMITER = '_';<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>  /** A regex for parsing server columns from meta. See above javadoc for meta layout */<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  private static final Pattern SERVER_COLUMN_PATTERN<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    = Pattern.compile("^server(_[0-9a-fA-F]{4})?$");<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
 <span class="sourceLineNo">218</span>  ////////////////////////<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>  /**<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   * @param connection connection we're using<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * @param visitor Visitor invoked against each row in regions family.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  public static void fullScanRegions(Connection connection,<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      final Visitor visitor)<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      throws IOException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    scanMeta(connection, null, null, QueryType.REGION, visitor);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>  /**<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   * @param connection connection we're using<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public static List&lt;Result&gt; fullScanRegions(Connection connection)<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      throws IOException {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    return fullScan(connection, QueryType.REGION);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  /**<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for tables.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   * @param connection connection we're using<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * @param visitor Visitor invoked against each row in tables family.<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  public static void fullScanTables(Connection connection,<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      final Visitor visitor)<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      throws IOException {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    scanMeta(connection, null, null, QueryType.TABLE, visitor);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>  /**<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   * @param connection connection we're using<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   * @param type scanned part of meta<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * @return List of {@link Result}<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  public static List&lt;Result&gt; fullScan(Connection connection, QueryType type)<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    throws IOException {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    CollectAllVisitor v = new CollectAllVisitor();<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    scanMeta(connection, null, null, type, v);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    return v.getResults();<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  }<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>  /**<a name="line.264"></a>
-<span class="sourceLineNo">265</span>   * Callers should call close on the returned {@link Table} instance.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>   * @param connection connection we're using to access Meta<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   * @return An {@link Table} for &lt;code&gt;hbase:meta&lt;/code&gt;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>   */<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  public static Table getMetaHTable(final Connection connection)<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  throws IOException {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    // We used to pass whole CatalogTracker in here, now we just pass in Connection<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    if (connection == null) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      throw new NullPointerException("No connection");<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    } else if (connection.isClosed()) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      throw new IOException("connection is closed");<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    return connection.getTable(TableName.META_TABLE_NAME);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>  /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * @param t Table to use (will be closed when done).<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   * @param g Get to run<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   */<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  private static Result get(final Table t, final Get g) throws IOException {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    if (t == null) return null;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    try {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      return t.get(g);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    } finally {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      t.close();<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    }<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  /**<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * Gets the region info and assignment for the specified region.<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @param connection connection we're using<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * @param regionName Region to lookup.<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   * @return Location and RegionInfo for &lt;code&gt;regionName&lt;/code&gt;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>   * @deprecated use {@link #getRegionLocation(Connection, byte[])} instead<a name="line.298"></a>
-<span class="sourceLineNo">299</span>   */<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  @Deprecated<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  public static Pair&lt;RegionInfo, ServerName&gt; getRegion(Connection connection, byte [] regionName)<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    throws IOException {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    HRegionLocation location = getRegionLocation(connection, regionName);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    return location == null<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      ? null<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      : new Pair&lt;&gt;(location.getRegionInfo(), location.getServerName());<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  /**<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * Returns the HRegionLocation from meta for the given region<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * @param connection connection we're using<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * @param regionName region we're looking for<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * @return HRegionLocation for the given region<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public static HRegionLocation getRegionLocation(Connection connection, byte[] regionName)<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      throws IOException {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    byte[] row = regionName;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    RegionInfo parsedInfo = null;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    try {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      parsedInfo = parseRegionInfoFromRegionName(regionName);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      row = getMetaKeyForRegion(parsedInfo);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    } catch (Exception parseEx) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      // Ignore. This is used with tableName passed as regionName.<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    Get get = new Get(row);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    Result r = get(getMetaHTable(connection), get);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    RegionLocations locations = getRegionLocations(r);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    return locations == null ? null<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      : locations.getRegionLocation(parsedInfo == null ? 0 : parsedInfo.getReplicaId());<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  /**<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * Returns the HRegionLocation from meta for the given region<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * @param connection connection we're using<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   * @param regionInfo region information<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * @return HRegionLocation for the given region<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   */<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  public static HRegionLocation getRegionLocation(Connection connection, RegionInfo regionInfo)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      throws IOException {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    byte[] row = getMetaKeyForRegion(regionInfo);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    Get get = new Get(row);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    Result r = get(getMetaHTable(connection), get);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    return getRegionLocation(r, regionInfo, regionInfo.getReplicaId());<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>  /** Returns the row key to use for this regionInfo */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public static byte[] getMetaKeyForRegion(RegionInfo regionInfo) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    return RegionReplicaUtil.getRegionInfoForDefaultReplica(regionInfo).getRegionName();<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /** Returns an HRI parsed from this regionName. Not all the fields of the HRI<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * is stored in the name, so the returned object should only be used for the fields<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * in the regionName.<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  public static RegionInfo parseRegionInfoFromRegionName(byte[] regionName) throws IOException {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    byte[][] fields = RegionInfo.parseRegionName(regionName);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    long regionId = Long.parseLong(Bytes.toString(fields[2]));<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    int replicaId = fields.length &gt; 3 ? Integer.parseInt(Bytes.toString(fields[3]), 16) : 0;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    return RegionInfoBuilder.newBuilder(TableName.valueOf(fields[0]))<a name="line.361"></a>
-<span class="sourceLineNo">362</span>              .setStartKey(fields[1])<a name="line.362"></a>
-<span class="sourceLineNo">363</span>              .setEndKey(fields[2])<a name="line.363"></a>
-<span class="sourceLineNo">364</span>              .setSplit(false)<a name="line.364"></a>
-<span class="sourceLineNo">365</span>              .setRegionId(regionId)<a name="line.365"></a>
-<span class="sourceLineNo">366</span>              .setReplicaId(replicaId)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>              .build();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  /**<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * Gets the result in hbase:meta for the specified region.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * @param connection connection we're using<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * @param regionName region we're looking for<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * @return result of the specified region<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   */<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  public static Result getRegionResult(Connection connection,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      byte[] regionName) throws IOException {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    Get get = new Get(regionName);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    return get(getMetaHTable(connection), get);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span>  /**<a name="line.383"></a>
-<span class="sourceLineNo">384</span>   * Get regions from the merge qualifier of the specified merged region<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * @return null if it doesn't contain merge qualifier, else two merge regions<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   */<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  @Nullable<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public static Pair&lt;RegionInfo, RegionInfo&gt; getRegionsFromMergeQualifier(<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      Connection connection, byte[] regionName) throws IOException {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    Result result = getRegionResult(connection, regionName);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    RegionInfo mergeA = getRegionInfo(result, HConstants.MERGEA_QUALIFIER);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    RegionInfo mergeB = getRegionInfo(result, HConstants.MERGEB_QUALIFIER);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    if (mergeA == null &amp;&amp; mergeB == null) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      return null;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    return new Pair&lt;&gt;(mergeA, mergeB);<a name="line.396"></a>
-<span class="sourceLineNo">397</span> }<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  /**<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * Checks if the specified table exists.  Looks at the hbase:meta table hosted on<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * the specified server.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param connection connection we're using<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param tableName table to check<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @return true if the table exists in meta, false if not<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  public static boolean tableExists(Connection connection,<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      final TableName tableName)<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  throws IOException {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    // Catalog tables always exist.<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    return tableName.equals(TableName.META_TABLE_NAME)<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        || getTableState(connection, tableName) != null;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  /**<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * Lists all of the regions currently in META.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   *<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param connection to connect with<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param excludeOfflinedSplitParents False if we are to include offlined/splitparents regions,<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   *                                    true and we'll leave out offlined regions from returned list<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * @return List of all user-space regions.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   */<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  @VisibleForTesting<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  public static List&lt;RegionInfo&gt; getAllRegions(Connection connection,<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      boolean excludeOfflinedSplitParents)<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      throws IOException {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result;<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>    result = getTableRegionsAndLocations(connection, null,<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        excludeOfflinedSplitParents);<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>    return getListOfRegionInfos(result);<a name="line.431"></a>
+<span class="sourceLineNo">219</span>  // Reading operations //<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  ////////////////////////<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>  /**<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   * @param connection connection we're using<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * @param visitor Visitor invoked against each row in regions family.<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   */<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public static void fullScanRegions(Connection connection,<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      final Visitor visitor)<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      throws IOException {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    scanMeta(connection, null, null, QueryType.REGION, visitor);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>  }<a name="line.231"></a>
+<span class="sourceLineNo">232</span><a name="line.232"></a>
+<span class="sourceLineNo">233</span>  /**<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for regions.<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @param connection connection we're using<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  public static List&lt;Result&gt; fullScanRegions(Connection connection)<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      throws IOException {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    return fullScan(connection, QueryType.REGION);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  /**<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt; for tables.<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * @param connection connection we're using<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * @param visitor Visitor invoked against each row in tables family.<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   */<a name="line.246"></a>
+<span class="sourceLineNo">247</span>  public static void fullScanTables(Connection connection,<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      final Visitor visitor)<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    scanMeta(connection, null, null, QueryType.TABLE, visitor);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  }<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>  /**<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * Performs a full scan of &lt;code&gt;hbase:meta&lt;/code&gt;.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   * @param connection connection we're using<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   * @param type scanned part of meta<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   * @return List of {@link Result}<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
+<span class="sourceLineNo">259</span>  public static List&lt;Result&gt; fullScan(Connection connection, QueryType type)<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    throws IOException {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    CollectAllVisitor v = new CollectAllVisitor();<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    scanMeta(connection, null, null, type, v);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    return v.getResults();<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  }<a name="line.264"></a>
+<span class="sourceLineNo">265</span><a name="line.265"></a>
+<span class="sourceLineNo">266</span>  /**<a name="line.266"></a>
+<span class="sourceLineNo">267</span>   * Callers should call close on the returned {@link Table} instance.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>   * @param connection connection we're using to access Meta<a name="line.268"></a>
+<span class="sourceLineNo">269</span>   * @return An {@link Table} for &lt;code&gt;hbase:meta&lt;/code&gt;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>   */<a name="line.270"></a>
+<span class="sourceLineNo">271</span>  public static Table getMetaHTable(final Connection connection)<a name="line.271"></a>
+<span class="sourceLineNo">272</span>  throws IOException {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // We used to pass whole CatalogTracker in here, now we just pass in Connection<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    if (connection == null) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      throw new NullPointerException("No connection");<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    } else if (connection.isClosed()) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      throw new IOException("connection is closed");<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    return connection.getTable(TableName.META_TABLE_NAME);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  }<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>  /**<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * @param t Table to use (will be closed when done).<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   * @param g Get to run<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   */<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  private static Result get(final Table t, final Get g) throws IOException {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    if (t == null) return null;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    try {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      return t.get(g);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    } finally {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      t.close();<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>  /**<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   * Gets the region info and assignment for the specified region.<a name="line.296"></a>
+<span class="sourceLineNo">297</span>   * @param connection connection we're using<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * @param regionName Region to lookup.<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   * @return Location and RegionInfo for &lt;code&gt;regionName&lt;/code&gt;<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   * @deprecated use {@link #getRegionLocation(Connection, byte[])} instead<a name="line.300"></a>
+<span class="sourceLineNo">301</span>   */<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  @Deprecated<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  public static Pair&lt;RegionInfo, ServerName&gt; getRegion(Connection connection, byte [] regionName)<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    throws IOException {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    HRegionLocation location = getRegionLocation(connection, regionName);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    return location == null<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      ? null<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      : new Pair&lt;&gt;(location.getRegionInfo(), location.getServerName());<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>  /**<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   * Returns the HRegionLocation from meta for the given region<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * @param connection connection we're using<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   * @param regionName region we're looking for<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * @return HRegionLocation for the given region<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   */<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  public static HRegionLocation getRegionLocation(Connection connection, byte[] regionName)<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      throws IOException {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    byte[] row = regionName;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    RegionInfo parsedInfo = null;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    try {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      parsedInfo = parseRegionInfoFromRegionName(regionName);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      row = getMetaKeyForRegion(parsedInfo);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    } catch (Exception parseEx) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      // Ignore. This is used with tableName passed as regionName.<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    Get get = new Get(row);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    Result r = get(getMetaHTable(connection), get);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    RegionLocations locations = getRegionLocations(r);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    return locations == null ? null<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      : locations.getRegionLocation(parsedInfo == null ? 0 : parsedInfo.getReplicaId());<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>  /**<a name="line.335"></a>
+<span class="sourceLineNo">336</span>   * Returns the HRegionLocation from meta for the given region<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * @param connection connection we're using<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * @param regionInfo region information<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * @return HRegionLocation for the given region<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   */<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  public static HRegionLocation getRegionLocation(Connection connection, RegionInfo regionInfo)<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      throws IOException {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    byte[] row = getMetaKeyForRegion(regionInfo);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    Get get = new Get(row);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    Result r = get(getMetaHTable(connection), get);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    return getRegionLocation(r, regionInfo, regionInfo.getReplicaId());<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  /** Returns the row key to use for this regionInfo */<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  public static byte[] getMetaKeyForRegion(RegionInfo regionInfo) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    return RegionReplicaUtil.getRegionInfoForDefaultReplica(regionInfo).getRegionName();<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  /** Returns an HRI parsed from this regionName. Not all the fields of the HRI<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * is stored in the name, so the returned object should only be used for the fields<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * in the regionName.<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   */<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  public static RegionInfo parseRegionInfoFromRegionName(byte[] regionName) throws IOException {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    byte[][] fields = RegionInfo.parseRegionName(regionName);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    long regionId = Long.parseLong(Bytes.toString(fields[2]));<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    int replicaId = fields.length &gt; 3 ? Integer.parseInt(Bytes.toString(fields[3]), 16) : 0;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    return RegionInfoBuilder.newBuilder(TableName.valueOf(fields[0]))<a name="line.363"></a>
+<span class="sourceLineNo">364</span>              .setStartKey(fields[1])<a name="line.364"></a>
+<span class="sourceLineNo">365</span>              .setEndKey(fields[2])<a name="line.365"></a>
+<span class="sourceLineNo">366</span>              .setSplit(false)<a name="line.366"></a>
+<span class="sourceLineNo">367</span>              .setRegionId(regionId)<a name="line.367"></a>
+<span class="sourceLineNo">368</span>              .setReplicaId(replicaId)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>              .build();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  /**<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * Gets the result in hbase:meta for the specified region.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * @param connection connection we're using<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * @param regionName region we're looking for<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * @return result of the specified region<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   */<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  public static Result getRegionResult(Connection connection,<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      byte[] regionName) throws IOException {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    Get get = new Get(regionName);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    get.addFamily(HConstants.CATALOG_FAMILY);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    return get(getMetaHTable(connection), get);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>  /**<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * Get regions from the merge qualifier of the specified merged region<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * @return null if it doesn't contain merge qualifier, else two merge regions<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   */<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  @Nullable<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  public static Pair&lt;RegionInfo, RegionInfo&gt; getRegionsFromMergeQualifier(<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      Connection connection, byte[] regionName) throws IOException {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    Result result = getRegionResult(connection, regionName);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    RegionInfo mergeA = getRegionInfo(result, HConstants.MERGEA_QUALIFIER);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    RegionInfo mergeB = getRegionInfo(result, HConstants.MERGEB_QUALIFIER);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    if (mergeA == null &amp;&amp; mergeB == null) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      return null;<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    return new Pair&lt;&gt;(mergeA, mergeB);<a name="line.398"></a>
+<span class="sourceLineNo">399</span> }<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>  /**<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   * Checks if the specified table exists.  Looks at the hbase:meta table hosted on<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   * the specified server.<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * @param connection connection we're using<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   * @param tableName table to check<a name="line.405"></a>
+<span class="sourceLineNo">406</span>   * @return true if the table exists in meta, false if not<a name="line.406"></a>
+<span class="sourceLineNo">407</span>   */<a name="line.407"></a>
+<span class="sourceLineNo">408</span>  public static boolean tableExists(Connection connection,<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      final TableName tableName)<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  throws IOException {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // Catalog tables always exist.<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    return tableName.equals(TableName.META_TABLE_NAME)<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        || getTableState(connection, tableName) != null;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  }<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>  /**<a name="line.416"></a>
+<span class="sourceLineNo">417</span>   * Lists all of the regions currently in META.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>   *<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * @param connection to connect with<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   * @param excludeOfflinedSplitParents False if we are to include offlined/splitparents regions,<a name="line.420"></a>
+<span class="sourceLineNo">421</span>   *                                    true and we'll leave out offlined regions from returned list<a name="line.421"></a>
+<span class="sourceLineNo">422</span>   * @return List of all user-space regions.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>   */<a name="line.423"></a>
+<span class="sourceLineNo">424</span>  @VisibleForTesting<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  public static List&lt;RegionInfo&gt; getAllRegions(Connection connection,<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      boolean excludeOfflinedSplitParents)<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      throws IOException {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result;<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>    result = getTableRegionsAndLocations(connection, null,<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        excludeOfflinedSplitParents);<a name="line.431"></a>
 <span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>  }<a name="line.433"></a>
+<span class="sourceLineNo">433</span>    return getListOfRegionInfos(result);<a name="line.433"></a>
 <span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>  /**<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * Gets all of the regions of the specified table. Do not use this method<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * to get meta table regions, use methods in MetaTableLocator instead.<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * @param connection connection we're using<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   * @param tableName table we're looking for<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   * @return Ordered list of {@link RegionInfo}.<a name="line.440"></a>
-<span class="sourceLineNo">441</span>   */<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  public static List&lt;RegionInfo&gt; getTableRegions(Connection connection, TableName tableName)<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  throws IOException {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    return getTableRegions(connection, tableName, false);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  }<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>  /**<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * Gets all of the regions of the specified table. Do not use this method<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   * to get meta table regions, use methods in MetaTableLocator instead.<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * @param connection connection we're using<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * @param tableName table we're looking for<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   * @param excludeOfflinedSplitParents If true, do not include offlined split<a name="line.452"></a>
-<span class="sourceLineNo">453</span>   * parents in the return.<a name="line.453"></a>
-<span class="sourceLineNo">454</span>   * @return Ordered list of {@link RegionInfo}.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>   */<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  public static List&lt;RegionInfo&gt; getTableRegions(Connection connection, TableName tableName,<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      final boolean excludeOfflinedSplitParents) throws IOException {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; result =<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      getTableRegionsAndLocations(connection, tableName, excludeOfflinedSplitParents);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    return getListOfRegionInfos(result);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>  }<a name="line.461"></a>
-<span class="sourceLineNo">462</span><a name="line.462"></a>
-<span class="sourceLineNo">463</span>  private static List&lt;RegionInfo&gt; getListOfRegionInfos(<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      final List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; pairs) {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    if (pairs == null || pairs.isEmpty()) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      return Collections.emptyList();<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    List&lt;RegionInfo&gt; result = new ArrayList&lt;&gt;(pairs.size());<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    for (Pair&lt;RegionInfo, ServerName&gt; pair : pairs) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      result.add(pair.getFirst());<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return result;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  /**<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * @param tableName table we're working with<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @return start row for scanning META according to query type<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  public static byte[] getTableStartRowForMeta(TableName tableName, QueryType type) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    if (tableName == null) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      return null;<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    }<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    switch (type) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    case REGION:<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      byte[] startRow = new byte[tableName.getName().length + 2];<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      System.arraycopy(tableName.getName(), 0, startRow, 0, tableName.getName().length);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      startRow[startRow.length - 2] = HConstants.DELIMITER;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      startRow[startRow.length - 1] = HConstants.DELIMITER;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      return startRow;<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    case ALL:<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    case TABLE:<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    default:<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      return tableName.getName();<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  }<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>  /**<a name="line.497"></a>
-<span class="sourceLineNo">498</span>   * @param tableName table we're working with<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * @return stop row for scanning META according to query type<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   */<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  public static byte[] getTableStopRowForMeta(TableName tableName, QueryType type) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    if (tableName == null) {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      return null;<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    }<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    final byte[] stopRow;<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    switch (type) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    case REGION:<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      stopRow = new byte[tableName.getName().length + 3];<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      System.arraycopy(tableName.getName(), 0, stopRow, 0, tableName.getName().length);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      stopRow[stopRow.length - 3] = ' ';<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      stopRow[stopRow.length - 2] = HConstants.DELIMITER;<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      stopRow[stopRow.length - 1] = HConstants.DELIMITER;<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      break;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    case ALL:<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    case TABLE:<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    default:<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      stopRow = new byte[tableName.getName().length + 1];<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      System.arraycopy(tableName.getName(), 0, stopRow, 0, tableName.getName().length);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      stopRow[stopRow.length - 1] = ' ';<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      break;<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    }<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    return stopRow;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
-<span class="sourceLineNo">524</span><a name="line.524"></a>
-<span class="sourceLineNo">525</span>  /**<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * This method creates a Scan object that will only scan catalog rows that<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * belong to the specified table. It doesn't specify any columns.<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   * This is a better alternative to just using a start row and scan until<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * it hits a new table since that requires parsing the HRI to get the table<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * name.<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * @param tableName bytes of table's name<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * @return configured Scan object<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   */<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  @Deprecated<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  public static Scan getScanForTableName(Connection connection, TableName tableName) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    // Start key is just the table name with delimiters<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    byte[] startKey = getTableStartRowForMeta(tableName, QueryType.REGION);<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    // Stop key appends the smallest possible char to the table name<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    byte[] stopKey = getTableStopRowForMeta(tableName, QueryType.REGION);<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>    Scan scan = getMetaScan(connection, -1);<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    scan.setStartRow(startKey);<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    scan.setStopRow(stopKey);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    return scan;<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  }<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>  private static Scan getMetaScan(Connection connection, int rowUpperLimit) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    Scan scan = new Scan();<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    int scannerCaching = connection.getConfiguration()<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        .getInt(HConstants.HBASE_META_SCANNER_CACHING,<a name="line.550"></a>
-<span class="sourceLineNo">551</span>            HConstants.DEFAULT_HBASE_META_SCANNER_CACHING);<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    if (connection.getConfiguration().getBoolean(HConstants.USE_META_REPLICAS,<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        HConstants.DEFAULT_USE_META_REPLICAS)) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      scan.setConsistency(Consistency.TIMELINE);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    if (rowUpperLimit &gt; 0) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      scan.setLimit(rowUpperLimit);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      scan.setReadType(Scan.ReadType.PREAD);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    

<TRUNCATED>