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/09/17 14:53:27 UTC

[01/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site bcb894667 -> 738e976e8


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html
new file mode 100644
index 0000000..1169764
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html
@@ -0,0 +1,282 @@
+<!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> *<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
+<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
+<span class="sourceLineNo">012</span> *<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
+<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
+<span class="sourceLineNo">018</span> */<a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.regionserver;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.junit.Assert.assertEquals;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.junit.Assert.assertFalse;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNotNull;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.junit.Assert.assertTrue;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.junit.Assert.fail;<a name="line.25"></a>
+<span class="sourceLineNo">026</span><a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.io.IOException;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.Collection;<a name="line.28"></a>
+<span class="sourceLineNo">029</span><a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.TableName;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.Get;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.client.HBaseAdmin;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.client.Put;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.client.Result;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.ResultScanner;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.client.Table;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.master.cleaner.TimeToLiveHFileCleaner;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionConfiguration;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.junit.AfterClass;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.junit.BeforeClass;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.junit.ClassRule;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.junit.Test;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.junit.experimental.categories.Category;<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>@Category({MediumTests.class})<a name="line.54"></a>
+<span class="sourceLineNo">055</span>public class TestCleanupCompactedFileOnRegionClose {<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  @ClassRule<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.58"></a>
+<span class="sourceLineNo">059</span>      HBaseClassTestRule.forClass(TestCleanupCompactedFileOnRegionClose.class);<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  private static HBaseTestingUtility util;<a name="line.61"></a>
+<span class="sourceLineNo">062</span><a name="line.62"></a>
+<span class="sourceLineNo">063</span>  @BeforeClass<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  public static void beforeClass() throws Exception {<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    util = new HBaseTestingUtility();<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    util.getConfiguration().setInt(CompactionConfiguration.HBASE_HSTORE_COMPACTION_MIN_KEY,100);<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    util.getConfiguration().set("dfs.blocksize", "64000");<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    util.getConfiguration().set("dfs.namenode.fs-limits.min-block-size", "1024");<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    util.getConfiguration().set(TimeToLiveHFileCleaner.TTL_CONF_KEY,"0");<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    util.startMiniCluster(2);<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>  @AfterClass<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  public static void afterclass() throws Exception {<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    util.shutdownMiniCluster();<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  }<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>  @Test<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  public void testCleanupOnClose() throws Exception {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    TableName tableName = TableName.valueOf("testCleanupOnClose");<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    String familyName = "f";<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    byte[] familyNameBytes = Bytes.toBytes(familyName);<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    util.createTable(tableName, familyName);<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>    HBaseAdmin hBaseAdmin = util.getHBaseAdmin();<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    Table table = util.getConnection().getTable(tableName);<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>    HRegionServer rs = util.getRSForFirstRegionInTable(tableName);<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    Region region = rs.getRegions(tableName).get(0);<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>    int refSFCount = 4;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    for (int i = 0; i &lt; refSFCount; i++) {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      for (int j = 0; j &lt; refSFCount; j++) {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>        Put put = new Put(Bytes.toBytes(j));<a name="line.94"></a>
+<span class="sourceLineNo">095</span>        put.addColumn(familyNameBytes, Bytes.toBytes(i), Bytes.toBytes(j));<a name="line.95"></a>
+<span class="sourceLineNo">096</span>        table.put(put);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      }<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      util.flush(tableName);<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    }<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    assertEquals(refSFCount, region.getStoreFileList(new byte[][]{familyNameBytes}).size());<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>    //add a delete, to test wether we end up with an inconsistency post region close<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    Delete delete = new Delete(Bytes.toBytes(refSFCount-1));<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    table.delete(delete);<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    util.flush(tableName);<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    assertFalse(table.exists(new Get(Bytes.toBytes(refSFCount-1))));<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>    //Create a scanner and keep it open to add references to StoreFileReaders<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    Scan scan = new Scan();<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    scan.setStopRow(Bytes.toBytes(refSFCount-2));<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    scan.setCaching(1);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    ResultScanner scanner = table.getScanner(scan);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    Result res = scanner.next();<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    assertNotNull(res);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    assertEquals(refSFCount, res.getFamilyMap(familyNameBytes).size());<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>    //Verify the references<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    int count = 0;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    for (HStoreFile sf : (Collection&lt;HStoreFile&gt;)region.getStore(familyNameBytes).getStorefiles()) {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      synchronized (sf) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        if (count &lt; refSFCount) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>          assertTrue(sf.isReferencedInReads());<a name="line.123"></a>
+<span class="sourceLineNo">124</span>        } else {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>          assertFalse(sf.isReferencedInReads());<a name="line.125"></a>
+<span class="sourceLineNo">126</span>        }<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      }<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      count++;<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>    //Major compact to produce compacted storefiles that need to be cleaned up<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    util.compact(tableName, true);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    assertEquals(1, region.getStoreFileList(new byte[][]{familyNameBytes}).size());<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    assertEquals(refSFCount+1,<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      ((HStore)region.getStore(familyNameBytes)).getStoreEngine().getStoreFileManager()<a name="line.135"></a>
+<span class="sourceLineNo">136</span>          .getCompactedfiles().size());<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>    //close then open the region to determine wether compacted storefiles get cleaned up on close<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    hBaseAdmin.unassign(region.getRegionInfo().getRegionName(), false);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    hBaseAdmin.assign(region.getRegionInfo().getRegionName());<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    util.waitUntilNoRegionsInTransition(10000);<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>    assertFalse("Deleted row should not exist",<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        table.exists(new Get(Bytes.toBytes(refSFCount-1))));<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>    rs = util.getRSForFirstRegionInTable(tableName);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    region = rs.getRegions(tableName).get(0);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    assertEquals(1, region.getStoreFileList(new byte[][]{familyNameBytes}).size());<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    assertEquals(0,<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        ((HStore)region.getStore(familyNameBytes)).getStoreEngine().getStoreFileManager()<a name="line.151"></a>
+<span class="sourceLineNo">152</span>            .getCompactedfiles().size());<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  }<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  @Test<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  public void testIOExceptionThrownOnClose() throws Exception {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    byte[] filler = new byte[128000];<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    TableName tableName = TableName.valueOf("testIOExceptionThrownOnClose");<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    String familyName = "f";<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    byte[] familyNameBytes = Bytes.toBytes(familyName);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    util.createTable(tableName, familyName);<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>    Table table = util.getConnection().getTable(tableName);<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>    HRegionServer rs = util.getRSForFirstRegionInTable(tableName);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    Region region = rs.getRegions(tableName).get(0);<a name="line.166"></a>
+<span class="sourceLineNo">167</span><a name="line.167"></a>
+<span class="sourceLineNo">168</span>    int refSFCount = 4;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    for (int i = 0; i &lt; refSFCount; i++) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      for (int j = 0; j &lt; refSFCount; j++) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        Put put = new Put(Bytes.toBytes(j));<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        put.addColumn(familyNameBytes, Bytes.toBytes(i), filler);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        table.put(put);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      }<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      util.flush(tableName);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    }<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    assertEquals(refSFCount, region.getStoreFileList(new byte[][]{familyNameBytes}).size());<a name="line.177"></a>
+<span class="sourceLineNo">178</span><a name="line.178"></a>
+<span class="sourceLineNo">179</span>    HStore store = ((HRegion) region).getStore(familyNameBytes);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    HStoreFile hsf = ((Collection&lt;HStoreFile&gt;)region.getStore(familyNameBytes).getStorefiles())<a name="line.180"></a>
+<span class="sourceLineNo">181</span>        .iterator().next();<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    long readPt = ((HRegion)region).getReadPoint(IsolationLevel.READ_COMMITTED);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    StoreFileScanner preadScanner = hsf.getPreadScanner(false, readPt, 0, false);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    StoreFileScanner streamScanner =<a name="line.184"></a>
+<span class="sourceLineNo">185</span>        hsf.getStreamScanner(false, false, false, readPt, 0,  false);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    preadScanner.seek(KeyValue.LOWESTKEY);<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    streamScanner.seek(KeyValue.LOWESTKEY);<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>    //Major compact to produce compacted storefiles that need to be cleaned up<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    util.compact(tableName, true);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    assertNotNull(preadScanner.next());<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    assertNotNull(streamScanner.next());<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    store.closeAndArchiveCompactedFiles(true);<a name="line.193"></a>
+<span class="sourceLineNo">194</span><a name="line.194"></a>
+<span class="sourceLineNo">195</span>    try {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      assertNotNull(preadScanner.next());<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      fail("Expected IOException");<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    }catch (IOException ex) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      ex.printStackTrace();<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>    //Wait a bit for file to be remove from<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    try {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      assertNotNull(streamScanner.next());<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      fail("Expected IOException");<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    } catch (IOException ex) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      ex.printStackTrace();<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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[08/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/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 4dd2a36..40a78dc 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -582,15 +582,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/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/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/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/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/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/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/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ScanPerformanceEvaluation.ScanCounter</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/HBaseClusterManager.CommandProvider.Operation.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseClusterManager.CommandProvider.Operation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.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.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/ResourceChecker.Phase.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ResourceChecker.Phase</span></a></li>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/regionserver/MockHStoreFile.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/MockHStoreFile.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/MockHStoreFile.html
index 677bf96..982c5da 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/MockHStoreFile.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/MockHStoreFile.html
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <dl>
 <dt>All Implemented Interfaces:</dt>
-<dd>org.apache.hadoop.hbase.regionserver.StoreFile</dd>
+<dd>org.apache.hadoop.hbase.regionserver.StoreFile, org.apache.hadoop.hbase.regionserver.StoreFileReader.Listener</dd>
 </dl>
 <hr>
 <br>
@@ -335,7 +335,7 @@ extends org.apache.hadoop.hbase.regionserver.HStoreFile</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HStoreFile</h3>
-<code>closeStoreFile, deleteStoreFile, excludeFromMinorCompaction, getCacheConf, getComparator, getFileInfo, getFirstKey, getLastKey, getMaxMemStoreTS, getPath, getQualifiedPath, getRefCount, isHFile, isReferencedInReads, toString, toStringDetailed</code></li>
+<code>closeStoreFile, closeStreamReaders, deleteStoreFile, excludeFromMinorCompaction, getCacheConf, getComparator, getFileInfo, getFirstKey, getLastKey, getMaxMemStoreTS, getPath, getQualifiedPath, getRefCount, isHFile, isReferencedInReads, storeFileReaderClosed, toString, toStringDetailed</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCellSkipListSet.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCellSkipListSet.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCellSkipListSet.html
index 3ea84d9..07d031e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCellSkipListSet.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCellSkipListSet.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCellFlatSet.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/TestCellSkipListSet.html" target="_top">Frames</a></li>
@@ -376,7 +376,7 @@ extends junit.framework.TestCase</pre>
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCellFlatSet.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/TestCellSkipListSet.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html
new file mode 100644
index 0000000..db03544
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html
@@ -0,0 +1,380 @@
+<!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>TestCleanupCompactedFileOnRegionClose (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="TestCleanupCompactedFileOnRegionClose (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9,"i1":9,"i2":10,"i3":10};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+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/TestCleanupCompactedFileOnRegionClose.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/regionserver/TestCellSkipListSet.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html" target="_top">Frames</a></li>
+<li><a href="TestCleanupCompactedFileOnRegionClose.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>Nested&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.regionserver</div>
+<h2 title="Class TestCleanupCompactedFileOnRegionClose" class="title">Class TestCleanupCompactedFileOnRegionClose</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.regionserver.TestCleanupCompactedFileOnRegionClose</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/regionserver/TestCleanupCompactedFileOnRegionClose.html#line.55">TestCleanupCompactedFileOnRegionClose</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>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== 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/regionserver/TestCleanupCompactedFileOnRegionClose.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#util">util</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</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/regionserver/TestCleanupCompactedFileOnRegionClose.html#TestCleanupCompactedFileOnRegionClose--">TestCleanupCompactedFileOnRegionClose</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="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></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>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#afterclass--">afterclass</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#beforeClass--">beforeClass</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/regionserver/TestCleanupCompactedFileOnRegionClose.html#testCleanupOnClose--">testCleanupOnClose</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#testIOExceptionThrownOnClose--">testIOExceptionThrownOnClose</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/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="blockList">
+<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/regionserver/TestCleanupCompactedFileOnRegionClose.html#line.58">CLASS_RULE</a></pre>
+</li>
+</ul>
+<a name="util">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>util</h4>
+<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#line.61">util</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="TestCleanupCompactedFileOnRegionClose--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestCleanupCompactedFileOnRegionClose</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#line.55">TestCleanupCompactedFileOnRegionClose</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="beforeClass--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>beforeClass</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#line.64">beforeClass</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="afterclass--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>afterclass</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#line.74">afterclass</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="testCleanupOnClose--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testCleanupOnClose</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#line.79">testCleanupOnClose</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="testIOExceptionThrownOnClose--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testIOExceptionThrownOnClose</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#line.156">testIOExceptionThrownOnClose</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/TestCleanupCompactedFileOnRegionClose.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/regionserver/TestCellSkipListSet.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html" target="_top">Frames</a></li>
+<li><a href="TestCleanupCompactedFileOnRegionClose.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>Nested&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/738e976e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html
index 6315eb4..722fceb 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCellSkipListSet.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClusterId.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -543,7 +543,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/regionserver/TestCellSkipListSet.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClusterId.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html
index b16d926..148127b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html
@@ -205,7 +205,7 @@ extends org.apache.hadoop.hbase.regionserver.HStore</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HStore</h3>
-<code>add, add, addChangedReaderObserver, areWritesEnabled, assertBulkLoadHFileOk, bulkLoadHFile, bulkLoadHFile, cancelRequestedCompaction, canSplit, close, closeAndArchiveCompactedFiles, compact, compactRecentForTestingAssumingDefaultPolicy, completeCompaction, createCacheConf, createFlushContext, createScanner, createStoreEngine, createStoreFileAndReader, createWriterInTmp, deleteChangedReaderObserver, deregisterChildren, determineTTLFromFamily, flushCache, getAvgStoreFileAge, getBlockingFileCount, getBytesPerChecksum, getCacheConfig, getChecksumType, getCloseCheckInterval, getColumnFamilyDescriptor, getColumnFamilyName, getCompactedCellsCount, getCompactedCellsSize, getCompactedFiles, getCompactedFilesCount, getCompactionCheckMultiplier, getCompactionPressure, getCompactionProgress, getCompactPriority, getComparator, getCoprocessorHost, getCurrentParallelPutCount, getDataBlockEncoder, getFileSystem, getFlushableSize, getFlushedCellsCount, getFlushedCellsSize, getFlushedOutputFile
 Size, getHFilesSize, getHRegion, getLastCompactSize, getMajorCompactedCellsCount, getMajorCompactedCellsSize, getMaxMemStoreTS, getMaxSequenceId, getMaxStoreFileAge, getMemStoreFlushSize, getMemStoreSize, getMinStoreFileAge, getNumHFiles, getNumReferenceFiles, getOffPeakHours, getRegionFileSystem, getRegionInfo, getScanInfo, getScanner, getScanners, getScanners, getScanners, getScanners, getSize, getSmallestReadPoint, getSnapshotSize, getSplitPoint, getStoreEngine, getStorefiles, getStorefilesCount, getStoreFileSize, getStorefilesRootLevelIndexSize, getStorefilesSize, getStoreFileTtl, getStoreHomedir, getStoreHomedir, getStoreSizeUncompressed, getTableName, getTotalStaticBloomSize, getTotalStaticIndexSize, hasReferences, hasTooManyStoreFiles, heapSize, isPrimaryReplicaStore, isSloppyMemStore, moveFileIntoPlace, needsCompaction, onConfigurationChange, postSnapshotOperation, preBulkLoadHFile, preFlushSeqIDEstimation, preSnapshotOperation, recreateScanners, refreshStoreFiles, refreshSt
 oreFiles, registerChildren, replaceStoreFiles, replayCompactionMarker, reportArchivedFilesForQuota, requestCompaction, requestCompaction, setDataBlockEncoderInTest, setScanInfo, shouldPerformMajorCompaction, snapshot, startReplayingFromWAL, stopReplayingFromWAL, throttleCompaction, timeOfOldestEdit, toString, triggerMajorCompaction, updateSpaceQuotaAfterFileReplacement, upsert, versionsToReturn</code></li>
+<code>add, add, addChangedReaderObserver, areWritesEnabled, assertBulkLoadHFileOk, bulkLoadHFile, bulkLoadHFile, cancelRequestedCompaction, canSplit, close, closeAndArchiveCompactedFiles, closeAndArchiveCompactedFiles, compact, compactRecentForTestingAssumingDefaultPolicy, completeCompaction, createCacheConf, createFlushContext, createScanner, createStoreEngine, createStoreFileAndReader, createWriterInTmp, deleteChangedReaderObserver, deregisterChildren, determineTTLFromFamily, flushCache, getAvgStoreFileAge, getBlockingFileCount, getBytesPerChecksum, getCacheConfig, getChecksumType, getCloseCheckInterval, getColumnFamilyDescriptor, getColumnFamilyName, getCompactedCellsCount, getCompactedCellsSize, getCompactedFiles, getCompactedFilesCount, getCompactionCheckMultiplier, getCompactionPressure, getCompactionProgress, getCompactPriority, getComparator, getCoprocessorHost, getCurrentParallelPutCount, getDataBlockEncoder, getFileSystem, getFlushableSize, getFlushedCellsCount, getFlushed
 CellsSize, getFlushedOutputFileSize, getHFilesSize, getHRegion, getLastCompactSize, getMajorCompactedCellsCount, getMajorCompactedCellsSize, getMaxMemStoreTS, getMaxSequenceId, getMaxStoreFileAge, getMemStoreFlushSize, getMemStoreSize, getMinStoreFileAge, getNumHFiles, getNumReferenceFiles, getOffPeakHours, getRegionFileSystem, getRegionInfo, getScanInfo, getScanner, getScanners, getScanners, getScanners, getScanners, getSize, getSmallestReadPoint, getSnapshotSize, getSplitPoint, getStoreEngine, getStorefiles, getStorefilesCount, getStoreFileSize, getStorefilesRootLevelIndexSize, getStorefilesSize, getStoreFileTtl, getStoreHomedir, getStoreHomedir, getStoreSizeUncompressed, getTableName, getTotalStaticBloomSize, getTotalStaticIndexSize, hasReferences, hasTooManyStoreFiles, heapSize, isPrimaryReplicaStore, isSloppyMemStore, moveFileIntoPlace, needsCompaction, onConfigurationChange, postSnapshotOperation, preBulkLoadHFile, preFlushSeqIDEstimation, preSnapshotOperation, recreateScanner
 s, refreshStoreFiles, refreshStoreFiles, registerChildren, replaceStoreFiles, replayCompactionMarker, reportArchivedFilesForQuota, requestCompaction, requestCompaction, setDataBlockEncoderInTest, setScanInfo, shouldPerformMajorCompaction, snapshot, startReplayingFromWAL, stopReplayingFromWAL, throttleCompaction, timeOfOldestEdit, toString, triggerMajorCompaction, updateSpaceQuotaAfterFileReplacement, upsert, versionsToReturn</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHStore.MyStore.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHStore.MyStore.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHStore.MyStore.html
index de59af5..c502b6e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHStore.MyStore.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHStore.MyStore.html
@@ -220,7 +220,7 @@ extends org.apache.hadoop.hbase.regionserver.HStore</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HStore</h3>
-<code>add, add, addChangedReaderObserver, areWritesEnabled, assertBulkLoadHFileOk, bulkLoadHFile, bulkLoadHFile, cancelRequestedCompaction, canSplit, close, closeAndArchiveCompactedFiles, compact, compactRecentForTestingAssumingDefaultPolicy, completeCompaction, createCacheConf, createFlushContext, createScanner, createStoreEngine, createStoreFileAndReader, createWriterInTmp, deleteChangedReaderObserver, deregisterChildren, determineTTLFromFamily, doCompaction, flushCache, getAvgStoreFileAge, getBlockingFileCount, getBytesPerChecksum, getCacheConfig, getChecksumType, getCloseCheckInterval, getColumnFamilyDescriptor, getColumnFamilyName, getCompactedCellsCount, getCompactedCellsSize, getCompactedFiles, getCompactedFilesCount, getCompactionCheckMultiplier, getCompactionPressure, getCompactionProgress, getCompactPriority, getComparator, getCoprocessorHost, getCurrentParallelPutCount, getDataBlockEncoder, getFileSystem, getFlushableSize, getFlushedCellsCount, getFlushedCellsSize, getFlu
 shedOutputFileSize, getHFilesSize, getHRegion, getLastCompactSize, getMajorCompactedCellsCount, getMajorCompactedCellsSize, getMaxMemStoreTS, getMaxSequenceId, getMaxStoreFileAge, getMemStoreFlushSize, getMemStoreSize, getMinStoreFileAge, getNumHFiles, getNumReferenceFiles, getOffPeakHours, getRegionFileSystem, getRegionInfo, getScanInfo, getScanner, getScanners, getScanners, getScanners, getSize, getSnapshotSize, getSplitPoint, getStoreEngine, getStorefiles, getStorefilesCount, getStoreFileSize, getStorefilesRootLevelIndexSize, getStorefilesSize, getStoreFileTtl, getStoreHomedir, getStoreHomedir, getStoreSizeUncompressed, getTableName, getTotalStaticBloomSize, getTotalStaticIndexSize, hasReferences, hasTooManyStoreFiles, heapSize, isPrimaryReplicaStore, isSloppyMemStore, moveFileIntoPlace, needsCompaction, onConfigurationChange, postSnapshotOperation, preBulkLoadHFile, preFlushSeqIDEstimation, preSnapshotOperation, recreateScanners, refreshStoreFiles, refreshStoreFiles, registerChi
 ldren, replaceStoreFiles, replayCompactionMarker, reportArchivedFilesForQuota, requestCompaction, requestCompaction, setDataBlockEncoderInTest, setScanInfo, shouldPerformMajorCompaction, snapshot, startReplayingFromWAL, stopReplayingFromWAL, throttleCompaction, timeOfOldestEdit, toString, triggerMajorCompaction, updateSpaceQuotaAfterFileReplacement, upsert, versionsToReturn</code></li>
+<code>add, add, addChangedReaderObserver, areWritesEnabled, assertBulkLoadHFileOk, bulkLoadHFile, bulkLoadHFile, cancelRequestedCompaction, canSplit, close, closeAndArchiveCompactedFiles, closeAndArchiveCompactedFiles, compact, compactRecentForTestingAssumingDefaultPolicy, completeCompaction, createCacheConf, createFlushContext, createScanner, createStoreEngine, createStoreFileAndReader, createWriterInTmp, deleteChangedReaderObserver, deregisterChildren, determineTTLFromFamily, doCompaction, flushCache, getAvgStoreFileAge, getBlockingFileCount, getBytesPerChecksum, getCacheConfig, getChecksumType, getCloseCheckInterval, getColumnFamilyDescriptor, getColumnFamilyName, getCompactedCellsCount, getCompactedCellsSize, getCompactedFiles, getCompactedFilesCount, getCompactionCheckMultiplier, getCompactionPressure, getCompactionProgress, getCompactPriority, getComparator, getCoprocessorHost, getCurrentParallelPutCount, getDataBlockEncoder, getFileSystem, getFlushableSize, getFlushedCellsCou
 nt, getFlushedCellsSize, getFlushedOutputFileSize, getHFilesSize, getHRegion, getLastCompactSize, getMajorCompactedCellsCount, getMajorCompactedCellsSize, getMaxMemStoreTS, getMaxSequenceId, getMaxStoreFileAge, getMemStoreFlushSize, getMemStoreSize, getMinStoreFileAge, getNumHFiles, getNumReferenceFiles, getOffPeakHours, getRegionFileSystem, getRegionInfo, getScanInfo, getScanner, getScanners, getScanners, getScanners, getSize, getSnapshotSize, getSplitPoint, getStoreEngine, getStorefiles, getStorefilesCount, getStoreFileSize, getStorefilesRootLevelIndexSize, getStorefilesSize, getStoreFileTtl, getStoreHomedir, getStoreHomedir, getStoreSizeUncompressed, getTableName, getTotalStaticBloomSize, getTotalStaticIndexSize, hasReferences, hasTooManyStoreFiles, heapSize, isPrimaryReplicaStore, isSloppyMemStore, moveFileIntoPlace, needsCompaction, onConfigurationChange, postSnapshotOperation, preBulkLoadHFile, preFlushSeqIDEstimation, preSnapshotOperation, recreateScanners, refreshStoreFiles,
  refreshStoreFiles, registerChildren, replaceStoreFiles, replayCompactionMarker, reportArchivedFilesForQuota, requestCompaction, requestCompaction, setDataBlockEncoderInTest, setScanInfo, shouldPerformMajorCompaction, snapshot, startReplayingFromWAL, stopReplayingFromWAL, throttleCompaction, timeOfOldestEdit, toString, triggerMajorCompaction, updateSpaceQuotaAfterFileReplacement, upsert, versionsToReturn</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
index 51d0de9..0fc9ab2 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
@@ -230,7 +230,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.HMaster</h3>
-<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCopr
 ocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationLoad, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getSyncReplicationReplayWALManager, getTableDescriptors, getTableStateManager, getUseThisHostnameInstead, getWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isInitialized, isInMaintenanceMode, isNor
 malizerOn, isSplitOrMergeEnabled, listDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, transitReplicationPeerSyncReplicationState, truncateTable, updateConfigurationForQuotasObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
+<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCopr
 ocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationLoad, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getSyncReplicationReplayWALManager, getTableDescriptors, getTableStateManager, getUseThisHostnameInstead, getWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isInitialized, isInMaintenanceMode, isNor
 malizerOn, isSplitOrMergeEnabled, listDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, transitReplicationPeerSyncReplicationState, truncateTable, updateConfigurationForQuotasObserver, updateReplicationPeerConfig, waitForMasterActive, waitUntilMetaOnline, waitUntilNamespaceOnline</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMaster.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMaster.html
index e38bca2..5b2a8ec 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMaster.html
@@ -230,7 +230,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.HMaster</h3>
-<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCopr
 ocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationLoad, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getSyncReplicationReplayWALManager, getTableDescriptors, getTableStateManager, getUseThisHostnameInstead, getWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isInitialized, isInMaintenanceMode, isNor
 malizerOn, isSplitOrMergeEnabled, listDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, transitReplicationPeerSyncReplicationState, truncateTable, updateConfigurationForQuotasObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
+<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCopr
 ocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationLoad, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getSyncReplicationReplayWALManager, getTableDescriptors, getTableStateManager, getUseThisHostnameInstead, getWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isInitialized, isInMaintenanceMode, isNor
 malizerOn, isSplitOrMergeEnabled, listDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, transitReplicationPeerSyncReplicationState, truncateTable, updateConfigurationForQuotasObserver, updateReplicationPeerConfig, waitForMasterActive, waitUntilMetaOnline, waitUntilNamespaceOnline</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestCleanupCompactedFileOnRegionClose.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestCleanupCompactedFileOnRegionClose.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestCleanupCompactedFileOnRegionClose.html
new file mode 100644
index 0000000..e3fa8b8
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/class-use/TestCleanupCompactedFileOnRegionClose.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.regionserver.TestCleanupCompactedFileOnRegionClose (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.regionserver.TestCleanupCompactedFileOnRegionClose (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/regionserver/TestCleanupCompactedFileOnRegionClose.html" title="class in org.apache.hadoop.hbase.regionserver">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/regionserver/class-use/TestCleanupCompactedFileOnRegionClose.html" target="_top">Frames</a></li>
+<li><a href="TestCleanupCompactedFileOnRegionClose.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.regionserver.TestCleanupCompactedFileOnRegionClose" class="title">Uses of Class<br>org.apache.hadoop.hbase.regionserver.TestCleanupCompactedFileOnRegionClose</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.regionserver.TestCleanupCompactedFileOnRegionClose</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/regionserver/TestCleanupCompactedFileOnRegionClose.html" title="class in org.apache.hadoop.hbase.regionserver">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/regionserver/class-use/TestCleanupCompactedFileOnRegionClose.html" target="_top">Frames</a></li>
+<li><a href="TestCleanupCompactedFileOnRegionClose.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/738e976e/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
index 64e9f8c..a7c7d94 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
@@ -45,6 +45,7 @@
 <li><a href="TestCacheOnWriteInSchema.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestCacheOnWriteInSchema</a></li>
 <li><a href="TestCellFlatSet.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestCellFlatSet</a></li>
 <li><a href="TestCellSkipListSet.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestCellSkipListSet</a></li>
+<li><a href="TestCleanupCompactedFileOnRegionClose.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestCleanupCompactedFileOnRegionClose</a></li>
 <li><a href="TestClearRegionBlockCache.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestClearRegionBlockCache</a></li>
 <li><a href="TestClusterId.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestClusterId</a></li>
 <li><a href="TestColumnSeeking.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestColumnSeeking</a></li>


[16/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html
index e074a8c..8cc5add 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html
@@ -722,172 +722,172 @@
 <span class="sourceLineNo">714</span>      "hbase.regionserver.kerberos.principal", host);<a name="line.714"></a>
 <span class="sourceLineNo">715</span>  }<a name="line.715"></a>
 <span class="sourceLineNo">716</span><a name="line.716"></a>
-<span class="sourceLineNo">717</span>  protected void waitForMasterActive() {<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
-<span class="sourceLineNo">719</span><a name="line.719"></a>
-<span class="sourceLineNo">720</span>  protected String getProcessName() {<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    return REGIONSERVER;<a name="line.721"></a>
-<span class="sourceLineNo">722</span>  }<a name="line.722"></a>
+<span class="sourceLineNo">717</span><a name="line.717"></a>
+<span class="sourceLineNo">718</span>  /**<a name="line.718"></a>
+<span class="sourceLineNo">719</span>   * Wait for an active Master.<a name="line.719"></a>
+<span class="sourceLineNo">720</span>   * See override in Master superclass for how it is used.<a name="line.720"></a>
+<span class="sourceLineNo">721</span>   */<a name="line.721"></a>
+<span class="sourceLineNo">722</span>  protected void waitForMasterActive() {}<a name="line.722"></a>
 <span class="sourceLineNo">723</span><a name="line.723"></a>
-<span class="sourceLineNo">724</span>  protected boolean canCreateBaseZNode() {<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    return this.masterless;<a name="line.725"></a>
+<span class="sourceLineNo">724</span>  protected String getProcessName() {<a name="line.724"></a>
+<span class="sourceLineNo">725</span>    return REGIONSERVER;<a name="line.725"></a>
 <span class="sourceLineNo">726</span>  }<a name="line.726"></a>
 <span class="sourceLineNo">727</span><a name="line.727"></a>
-<span class="sourceLineNo">728</span>  protected boolean canUpdateTableDescriptor() {<a name="line.728"></a>
-<span class="sourceLineNo">729</span>    return false;<a name="line.729"></a>
+<span class="sourceLineNo">728</span>  protected boolean canCreateBaseZNode() {<a name="line.728"></a>
+<span class="sourceLineNo">729</span>    return this.masterless;<a name="line.729"></a>
 <span class="sourceLineNo">730</span>  }<a name="line.730"></a>
 <span class="sourceLineNo">731</span><a name="line.731"></a>
-<span class="sourceLineNo">732</span>  protected RSRpcServices createRpcServices() throws IOException {<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    return new RSRpcServices(this);<a name="line.733"></a>
+<span class="sourceLineNo">732</span>  protected boolean canUpdateTableDescriptor() {<a name="line.732"></a>
+<span class="sourceLineNo">733</span>    return false;<a name="line.733"></a>
 <span class="sourceLineNo">734</span>  }<a name="line.734"></a>
 <span class="sourceLineNo">735</span><a name="line.735"></a>
-<span class="sourceLineNo">736</span>  protected void configureInfoServer() {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    infoServer.addServlet("rs-status", "/rs-status", RSStatusServlet.class);<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    infoServer.setAttribute(REGIONSERVER, this);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>  }<a name="line.739"></a>
-<span class="sourceLineNo">740</span><a name="line.740"></a>
-<span class="sourceLineNo">741</span>  protected Class&lt;? extends HttpServlet&gt; getDumpServlet() {<a name="line.741"></a>
-<span class="sourceLineNo">742</span>    return RSDumpServlet.class;<a name="line.742"></a>
+<span class="sourceLineNo">736</span>  protected RSRpcServices createRpcServices() throws IOException {<a name="line.736"></a>
+<span class="sourceLineNo">737</span>    return new RSRpcServices(this);<a name="line.737"></a>
+<span class="sourceLineNo">738</span>  }<a name="line.738"></a>
+<span class="sourceLineNo">739</span><a name="line.739"></a>
+<span class="sourceLineNo">740</span>  protected void configureInfoServer() {<a name="line.740"></a>
+<span class="sourceLineNo">741</span>    infoServer.addServlet("rs-status", "/rs-status", RSStatusServlet.class);<a name="line.741"></a>
+<span class="sourceLineNo">742</span>    infoServer.setAttribute(REGIONSERVER, this);<a name="line.742"></a>
 <span class="sourceLineNo">743</span>  }<a name="line.743"></a>
 <span class="sourceLineNo">744</span><a name="line.744"></a>
-<span class="sourceLineNo">745</span>  @Override<a name="line.745"></a>
-<span class="sourceLineNo">746</span>  public boolean registerService(com.google.protobuf.Service instance) {<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    /*<a name="line.747"></a>
-<span class="sourceLineNo">748</span>     * No stacking of instances is allowed for a single executorService name<a name="line.748"></a>
-<span class="sourceLineNo">749</span>     */<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    com.google.protobuf.Descriptors.ServiceDescriptor serviceDesc =<a name="line.750"></a>
-<span class="sourceLineNo">751</span>        instance.getDescriptorForType();<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    String serviceName = CoprocessorRpcUtils.getServiceName(serviceDesc);<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    if (coprocessorServiceHandlers.containsKey(serviceName)) {<a name="line.753"></a>
-<span class="sourceLineNo">754</span>      LOG.error("Coprocessor executorService " + serviceName<a name="line.754"></a>
-<span class="sourceLineNo">755</span>          + " already registered, rejecting request from " + instance);<a name="line.755"></a>
-<span class="sourceLineNo">756</span>      return false;<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    }<a name="line.757"></a>
-<span class="sourceLineNo">758</span><a name="line.758"></a>
-<span class="sourceLineNo">759</span>    coprocessorServiceHandlers.put(serviceName, instance);<a name="line.759"></a>
-<span class="sourceLineNo">760</span>    if (LOG.isDebugEnabled()) {<a name="line.760"></a>
-<span class="sourceLineNo">761</span>      LOG.debug("Registered regionserver coprocessor executorService: executorService=" + serviceName);<a name="line.761"></a>
-<span class="sourceLineNo">762</span>    }<a name="line.762"></a>
-<span class="sourceLineNo">763</span>    return true;<a name="line.763"></a>
-<span class="sourceLineNo">764</span>  }<a name="line.764"></a>
-<span class="sourceLineNo">765</span><a name="line.765"></a>
-<span class="sourceLineNo">766</span>  /**<a name="line.766"></a>
-<span class="sourceLineNo">767</span>   * Create a 'smarter' Connection, one that is capable of by-passing RPC if the request is to<a name="line.767"></a>
-<span class="sourceLineNo">768</span>   * the local server; i.e. a short-circuit Connection. Safe to use going to local or remote<a name="line.768"></a>
-<span class="sourceLineNo">769</span>   * server. Create this instance in a method can be intercepted and mocked in tests.<a name="line.769"></a>
-<span class="sourceLineNo">770</span>   * @throws IOException<a name="line.770"></a>
-<span class="sourceLineNo">771</span>   */<a name="line.771"></a>
-<span class="sourceLineNo">772</span>  @VisibleForTesting<a name="line.772"></a>
-<span class="sourceLineNo">773</span>  protected ClusterConnection createClusterConnection() throws IOException {<a name="line.773"></a>
-<span class="sourceLineNo">774</span>    Configuration conf = this.conf;<a name="line.774"></a>
-<span class="sourceLineNo">775</span>    if (conf.get(HConstants.CLIENT_ZOOKEEPER_QUORUM) != null) {<a name="line.775"></a>
-<span class="sourceLineNo">776</span>      // Use server ZK cluster for server-issued connections, so we clone<a name="line.776"></a>
-<span class="sourceLineNo">777</span>      // the conf and unset the client ZK related properties<a name="line.777"></a>
-<span class="sourceLineNo">778</span>      conf = new Configuration(this.conf);<a name="line.778"></a>
-<span class="sourceLineNo">779</span>      conf.unset(HConstants.CLIENT_ZOOKEEPER_QUORUM);<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    }<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    // Create a cluster connection that when appropriate, can short-circuit and go directly to the<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    // local server if the request is to the local server bypassing RPC. Can be used for both local<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    // and remote invocations.<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    return ConnectionUtils.createShortCircuitConnection(conf, null, userProvider.getCurrent(),<a name="line.784"></a>
-<span class="sourceLineNo">785</span>      serverName, rpcServices, rpcServices);<a name="line.785"></a>
-<span class="sourceLineNo">786</span>  }<a name="line.786"></a>
-<span class="sourceLineNo">787</span><a name="line.787"></a>
-<span class="sourceLineNo">788</span>  /**<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * Run test on configured codecs to make sure supporting libs are in place.<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   * @param c<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   * @throws IOException<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   */<a name="line.792"></a>
-<span class="sourceLineNo">793</span>  private static void checkCodecs(final Configuration c) throws IOException {<a name="line.793"></a>
-<span class="sourceLineNo">794</span>    // check to see if the codec list is available:<a name="line.794"></a>
-<span class="sourceLineNo">795</span>    String [] codecs = c.getStrings("hbase.regionserver.codecs", (String[])null);<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    if (codecs == null) return;<a name="line.796"></a>
-<span class="sourceLineNo">797</span>    for (String codec : codecs) {<a name="line.797"></a>
-<span class="sourceLineNo">798</span>      if (!CompressionTest.testCompression(codec)) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>        throw new IOException("Compression codec " + codec +<a name="line.799"></a>
-<span class="sourceLineNo">800</span>          " not supported, aborting RS construction");<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      }<a name="line.801"></a>
-<span class="sourceLineNo">802</span>    }<a name="line.802"></a>
-<span class="sourceLineNo">803</span>  }<a name="line.803"></a>
-<span class="sourceLineNo">804</span><a name="line.804"></a>
-<span class="sourceLineNo">805</span>  public String getClusterId() {<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    return this.clusterId;<a name="line.806"></a>
+<span class="sourceLineNo">745</span>  protected Class&lt;? extends HttpServlet&gt; getDumpServlet() {<a name="line.745"></a>
+<span class="sourceLineNo">746</span>    return RSDumpServlet.class;<a name="line.746"></a>
+<span class="sourceLineNo">747</span>  }<a name="line.747"></a>
+<span class="sourceLineNo">748</span><a name="line.748"></a>
+<span class="sourceLineNo">749</span>  @Override<a name="line.749"></a>
+<span class="sourceLineNo">750</span>  public boolean registerService(com.google.protobuf.Service instance) {<a name="line.750"></a>
+<span class="sourceLineNo">751</span>    /*<a name="line.751"></a>
+<span class="sourceLineNo">752</span>     * No stacking of instances is allowed for a single executorService name<a name="line.752"></a>
+<span class="sourceLineNo">753</span>     */<a name="line.753"></a>
+<span class="sourceLineNo">754</span>    com.google.protobuf.Descriptors.ServiceDescriptor serviceDesc =<a name="line.754"></a>
+<span class="sourceLineNo">755</span>        instance.getDescriptorForType();<a name="line.755"></a>
+<span class="sourceLineNo">756</span>    String serviceName = CoprocessorRpcUtils.getServiceName(serviceDesc);<a name="line.756"></a>
+<span class="sourceLineNo">757</span>    if (coprocessorServiceHandlers.containsKey(serviceName)) {<a name="line.757"></a>
+<span class="sourceLineNo">758</span>      LOG.error("Coprocessor executorService " + serviceName<a name="line.758"></a>
+<span class="sourceLineNo">759</span>          + " already registered, rejecting request from " + instance);<a name="line.759"></a>
+<span class="sourceLineNo">760</span>      return false;<a name="line.760"></a>
+<span class="sourceLineNo">761</span>    }<a name="line.761"></a>
+<span class="sourceLineNo">762</span><a name="line.762"></a>
+<span class="sourceLineNo">763</span>    coprocessorServiceHandlers.put(serviceName, instance);<a name="line.763"></a>
+<span class="sourceLineNo">764</span>    if (LOG.isDebugEnabled()) {<a name="line.764"></a>
+<span class="sourceLineNo">765</span>      LOG.debug("Registered regionserver coprocessor executorService: executorService=" + serviceName);<a name="line.765"></a>
+<span class="sourceLineNo">766</span>    }<a name="line.766"></a>
+<span class="sourceLineNo">767</span>    return true;<a name="line.767"></a>
+<span class="sourceLineNo">768</span>  }<a name="line.768"></a>
+<span class="sourceLineNo">769</span><a name="line.769"></a>
+<span class="sourceLineNo">770</span>  /**<a name="line.770"></a>
+<span class="sourceLineNo">771</span>   * Create a 'smarter' Connection, one that is capable of by-passing RPC if the request is to<a name="line.771"></a>
+<span class="sourceLineNo">772</span>   * the local server; i.e. a short-circuit Connection. Safe to use going to local or remote<a name="line.772"></a>
+<span class="sourceLineNo">773</span>   * server. Create this instance in a method can be intercepted and mocked in tests.<a name="line.773"></a>
+<span class="sourceLineNo">774</span>   * @throws IOException<a name="line.774"></a>
+<span class="sourceLineNo">775</span>   */<a name="line.775"></a>
+<span class="sourceLineNo">776</span>  @VisibleForTesting<a name="line.776"></a>
+<span class="sourceLineNo">777</span>  protected ClusterConnection createClusterConnection() throws IOException {<a name="line.777"></a>
+<span class="sourceLineNo">778</span>    Configuration conf = this.conf;<a name="line.778"></a>
+<span class="sourceLineNo">779</span>    if (conf.get(HConstants.CLIENT_ZOOKEEPER_QUORUM) != null) {<a name="line.779"></a>
+<span class="sourceLineNo">780</span>      // Use server ZK cluster for server-issued connections, so we clone<a name="line.780"></a>
+<span class="sourceLineNo">781</span>      // the conf and unset the client ZK related properties<a name="line.781"></a>
+<span class="sourceLineNo">782</span>      conf = new Configuration(this.conf);<a name="line.782"></a>
+<span class="sourceLineNo">783</span>      conf.unset(HConstants.CLIENT_ZOOKEEPER_QUORUM);<a name="line.783"></a>
+<span class="sourceLineNo">784</span>    }<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    // Create a cluster connection that when appropriate, can short-circuit and go directly to the<a name="line.785"></a>
+<span class="sourceLineNo">786</span>    // local server if the request is to the local server bypassing RPC. Can be used for both local<a name="line.786"></a>
+<span class="sourceLineNo">787</span>    // and remote invocations.<a name="line.787"></a>
+<span class="sourceLineNo">788</span>    return ConnectionUtils.createShortCircuitConnection(conf, null, userProvider.getCurrent(),<a name="line.788"></a>
+<span class="sourceLineNo">789</span>      serverName, rpcServices, rpcServices);<a name="line.789"></a>
+<span class="sourceLineNo">790</span>  }<a name="line.790"></a>
+<span class="sourceLineNo">791</span><a name="line.791"></a>
+<span class="sourceLineNo">792</span>  /**<a name="line.792"></a>
+<span class="sourceLineNo">793</span>   * Run test on configured codecs to make sure supporting libs are in place.<a name="line.793"></a>
+<span class="sourceLineNo">794</span>   * @param c<a name="line.794"></a>
+<span class="sourceLineNo">795</span>   * @throws IOException<a name="line.795"></a>
+<span class="sourceLineNo">796</span>   */<a name="line.796"></a>
+<span class="sourceLineNo">797</span>  private static void checkCodecs(final Configuration c) throws IOException {<a name="line.797"></a>
+<span class="sourceLineNo">798</span>    // check to see if the codec list is available:<a name="line.798"></a>
+<span class="sourceLineNo">799</span>    String [] codecs = c.getStrings("hbase.regionserver.codecs", (String[])null);<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    if (codecs == null) return;<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    for (String codec : codecs) {<a name="line.801"></a>
+<span class="sourceLineNo">802</span>      if (!CompressionTest.testCompression(codec)) {<a name="line.802"></a>
+<span class="sourceLineNo">803</span>        throw new IOException("Compression codec " + codec +<a name="line.803"></a>
+<span class="sourceLineNo">804</span>          " not supported, aborting RS construction");<a name="line.804"></a>
+<span class="sourceLineNo">805</span>      }<a name="line.805"></a>
+<span class="sourceLineNo">806</span>    }<a name="line.806"></a>
 <span class="sourceLineNo">807</span>  }<a name="line.807"></a>
 <span class="sourceLineNo">808</span><a name="line.808"></a>
-<span class="sourceLineNo">809</span>  /**<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * Setup our cluster connection if not already initialized.<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   * @throws IOException<a name="line.811"></a>
-<span class="sourceLineNo">812</span>   */<a name="line.812"></a>
-<span class="sourceLineNo">813</span>  protected synchronized void setupClusterConnection() throws IOException {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    if (clusterConnection == null) {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>      clusterConnection = createClusterConnection();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      metaTableLocator = new MetaTableLocator();<a name="line.816"></a>
-<span class="sourceLineNo">817</span>    }<a name="line.817"></a>
-<span class="sourceLineNo">818</span>  }<a name="line.818"></a>
-<span class="sourceLineNo">819</span><a name="line.819"></a>
-<span class="sourceLineNo">820</span>  /**<a name="line.820"></a>
-<span class="sourceLineNo">821</span>   * All initialization needed before we go register with Master.&lt;br&gt;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>   * Do bare minimum. Do bulk of initializations AFTER we've connected to the Master.&lt;br&gt;<a name="line.822"></a>
-<span class="sourceLineNo">823</span>   * In here we just put up the RpcServer, setup Connection, and ZooKeeper.<a name="line.823"></a>
-<span class="sourceLineNo">824</span>   */<a name="line.824"></a>
-<span class="sourceLineNo">825</span>  private void preRegistrationInitialization() {<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    try {<a name="line.826"></a>
-<span class="sourceLineNo">827</span>      initializeZooKeeper();<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      setupClusterConnection();<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      // Setup RPC client for master communication<a name="line.829"></a>
-<span class="sourceLineNo">830</span>      this.rpcClient = RpcClientFactory.createClient(conf, clusterId, new InetSocketAddress(<a name="line.830"></a>
-<span class="sourceLineNo">831</span>          this.rpcServices.isa.getAddress(), 0), clusterConnection.getConnectionMetrics());<a name="line.831"></a>
-<span class="sourceLineNo">832</span>    } catch (Throwable t) {<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      // Call stop if error or process will stick around for ever since server<a name="line.833"></a>
-<span class="sourceLineNo">834</span>      // puts up non-daemon threads.<a name="line.834"></a>
-<span class="sourceLineNo">835</span>      this.rpcServices.stop();<a name="line.835"></a>
-<span class="sourceLineNo">836</span>      abort("Initialization of RS failed.  Hence aborting RS.", t);<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    }<a name="line.837"></a>
-<span class="sourceLineNo">838</span>  }<a name="line.838"></a>
-<span class="sourceLineNo">839</span><a name="line.839"></a>
-<span class="sourceLineNo">840</span>  /**<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * Bring up connection to zk ensemble and then wait until a master for this cluster and then after<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   * that, wait until cluster 'up' flag has been set. This is the order in which master does things.<a name="line.842"></a>
-<span class="sourceLineNo">843</span>   * &lt;p&gt;<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   * Finally open long-living server short-circuit connection.<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   */<a name="line.845"></a>
-<span class="sourceLineNo">846</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE",<a name="line.846"></a>
-<span class="sourceLineNo">847</span>    justification="cluster Id znode read would give us correct response")<a name="line.847"></a>
-<span class="sourceLineNo">848</span>  private void initializeZooKeeper() throws IOException, InterruptedException {<a name="line.848"></a>
-<span class="sourceLineNo">849</span>    // Nothing to do in here if no Master in the mix.<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    if (this.masterless) {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      return;<a name="line.851"></a>
-<span class="sourceLineNo">852</span>    }<a name="line.852"></a>
-<span class="sourceLineNo">853</span><a name="line.853"></a>
-<span class="sourceLineNo">854</span>    // Create the master address tracker, register with zk, and start it.  Then<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    // block until a master is available.  No point in starting up if no master<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    // running.<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    blockAndCheckIfStopped(this.masterAddressTracker);<a name="line.857"></a>
-<span class="sourceLineNo">858</span><a name="line.858"></a>
-<span class="sourceLineNo">859</span>    // Wait on cluster being up.  Master will set this flag up in zookeeper<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    // when ready.<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    blockAndCheckIfStopped(this.clusterStatusTracker);<a name="line.861"></a>
+<span class="sourceLineNo">809</span>  public String getClusterId() {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>    return this.clusterId;<a name="line.810"></a>
+<span class="sourceLineNo">811</span>  }<a name="line.811"></a>
+<span class="sourceLineNo">812</span><a name="line.812"></a>
+<span class="sourceLineNo">813</span>  /**<a name="line.813"></a>
+<span class="sourceLineNo">814</span>   * Setup our cluster connection if not already initialized.<a name="line.814"></a>
+<span class="sourceLineNo">815</span>   * @throws IOException<a name="line.815"></a>
+<span class="sourceLineNo">816</span>   */<a name="line.816"></a>
+<span class="sourceLineNo">817</span>  protected synchronized void setupClusterConnection() throws IOException {<a name="line.817"></a>
+<span class="sourceLineNo">818</span>    if (clusterConnection == null) {<a name="line.818"></a>
+<span class="sourceLineNo">819</span>      clusterConnection = createClusterConnection();<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      metaTableLocator = new MetaTableLocator();<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    }<a name="line.821"></a>
+<span class="sourceLineNo">822</span>  }<a name="line.822"></a>
+<span class="sourceLineNo">823</span><a name="line.823"></a>
+<span class="sourceLineNo">824</span>  /**<a name="line.824"></a>
+<span class="sourceLineNo">825</span>   * All initialization needed before we go register with Master.&lt;br&gt;<a name="line.825"></a>
+<span class="sourceLineNo">826</span>   * Do bare minimum. Do bulk of initializations AFTER we've connected to the Master.&lt;br&gt;<a name="line.826"></a>
+<span class="sourceLineNo">827</span>   * In here we just put up the RpcServer, setup Connection, and ZooKeeper.<a name="line.827"></a>
+<span class="sourceLineNo">828</span>   */<a name="line.828"></a>
+<span class="sourceLineNo">829</span>  private void preRegistrationInitialization() {<a name="line.829"></a>
+<span class="sourceLineNo">830</span>    try {<a name="line.830"></a>
+<span class="sourceLineNo">831</span>      initializeZooKeeper();<a name="line.831"></a>
+<span class="sourceLineNo">832</span>      setupClusterConnection();<a name="line.832"></a>
+<span class="sourceLineNo">833</span>      // Setup RPC client for master communication<a name="line.833"></a>
+<span class="sourceLineNo">834</span>      this.rpcClient = RpcClientFactory.createClient(conf, clusterId, new InetSocketAddress(<a name="line.834"></a>
+<span class="sourceLineNo">835</span>          this.rpcServices.isa.getAddress(), 0), clusterConnection.getConnectionMetrics());<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    } catch (Throwable t) {<a name="line.836"></a>
+<span class="sourceLineNo">837</span>      // Call stop if error or process will stick around for ever since server<a name="line.837"></a>
+<span class="sourceLineNo">838</span>      // puts up non-daemon threads.<a name="line.838"></a>
+<span class="sourceLineNo">839</span>      this.rpcServices.stop();<a name="line.839"></a>
+<span class="sourceLineNo">840</span>      abort("Initialization of RS failed.  Hence aborting RS.", t);<a name="line.840"></a>
+<span class="sourceLineNo">841</span>    }<a name="line.841"></a>
+<span class="sourceLineNo">842</span>  }<a name="line.842"></a>
+<span class="sourceLineNo">843</span><a name="line.843"></a>
+<span class="sourceLineNo">844</span>  /**<a name="line.844"></a>
+<span class="sourceLineNo">845</span>   * Bring up connection to zk ensemble and then wait until a master for this cluster and then after<a name="line.845"></a>
+<span class="sourceLineNo">846</span>   * that, wait until cluster 'up' flag has been set. This is the order in which master does things.<a name="line.846"></a>
+<span class="sourceLineNo">847</span>   * &lt;p&gt;<a name="line.847"></a>
+<span class="sourceLineNo">848</span>   * Finally open long-living server short-circuit connection.<a name="line.848"></a>
+<span class="sourceLineNo">849</span>   */<a name="line.849"></a>
+<span class="sourceLineNo">850</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE",<a name="line.850"></a>
+<span class="sourceLineNo">851</span>    justification="cluster Id znode read would give us correct response")<a name="line.851"></a>
+<span class="sourceLineNo">852</span>  private void initializeZooKeeper() throws IOException, InterruptedException {<a name="line.852"></a>
+<span class="sourceLineNo">853</span>    // Nothing to do in here if no Master in the mix.<a name="line.853"></a>
+<span class="sourceLineNo">854</span>    if (this.masterless) {<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      return;<a name="line.855"></a>
+<span class="sourceLineNo">856</span>    }<a name="line.856"></a>
+<span class="sourceLineNo">857</span><a name="line.857"></a>
+<span class="sourceLineNo">858</span>    // Create the master address tracker, register with zk, and start it.  Then<a name="line.858"></a>
+<span class="sourceLineNo">859</span>    // block until a master is available.  No point in starting up if no master<a name="line.859"></a>
+<span class="sourceLineNo">860</span>    // running.<a name="line.860"></a>
+<span class="sourceLineNo">861</span>    blockAndCheckIfStopped(this.masterAddressTracker);<a name="line.861"></a>
 <span class="sourceLineNo">862</span><a name="line.862"></a>
-<span class="sourceLineNo">863</span>    // If we are HMaster then the cluster id should have already been set.<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    if (clusterId == null) {<a name="line.864"></a>
-<span class="sourceLineNo">865</span>      // Retrieve clusterId<a name="line.865"></a>
-<span class="sourceLineNo">866</span>      // Since cluster status is now up<a name="line.866"></a>
-<span class="sourceLineNo">867</span>      // ID should have already been set by HMaster<a name="line.867"></a>
-<span class="sourceLineNo">868</span>      try {<a name="line.868"></a>
-<span class="sourceLineNo">869</span>        clusterId = ZKClusterId.readClusterIdZNode(this.zooKeeper);<a name="line.869"></a>
-<span class="sourceLineNo">870</span>        if (clusterId == null) {<a name="line.870"></a>
-<span class="sourceLineNo">871</span>          this.abort("Cluster ID has not been set");<a name="line.871"></a>
-<span class="sourceLineNo">872</span>        }<a name="line.872"></a>
-<span class="sourceLineNo">873</span>        LOG.info("ClusterId : " + clusterId);<a name="line.873"></a>
-<span class="sourceLineNo">874</span>      } catch (KeeperException e) {<a name="line.874"></a>
-<span class="sourceLineNo">875</span>        this.abort("Failed to retrieve Cluster ID", e);<a name="line.875"></a>
-<span class="sourceLineNo">876</span>      }<a name="line.876"></a>
-<span class="sourceLineNo">877</span>    }<a name="line.877"></a>
-<span class="sourceLineNo">878</span><a name="line.878"></a>
-<span class="sourceLineNo">879</span>    // In case colocated master, wait here till it's active.<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    // So backup masters won't start as regionservers.<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    // This is to avoid showing backup masters as regionservers<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    // in master web UI, or assigning any region to them.<a name="line.882"></a>
+<span class="sourceLineNo">863</span>    // Wait on cluster being up.  Master will set this flag up in zookeeper<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    // when ready.<a name="line.864"></a>
+<span class="sourceLineNo">865</span>    blockAndCheckIfStopped(this.clusterStatusTracker);<a name="line.865"></a>
+<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">867</span>    // If we are HMaster then the cluster id should have already been set.<a name="line.867"></a>
+<span class="sourceLineNo">868</span>    if (clusterId == null) {<a name="line.868"></a>
+<span class="sourceLineNo">869</span>      // Retrieve clusterId<a name="line.869"></a>
+<span class="sourceLineNo">870</span>      // Since cluster status is now up<a name="line.870"></a>
+<span class="sourceLineNo">871</span>      // ID should have already been set by HMaster<a name="line.871"></a>
+<span class="sourceLineNo">872</span>      try {<a name="line.872"></a>
+<span class="sourceLineNo">873</span>        clusterId = ZKClusterId.readClusterIdZNode(this.zooKeeper);<a name="line.873"></a>
+<span class="sourceLineNo">874</span>        if (clusterId == null) {<a name="line.874"></a>
+<span class="sourceLineNo">875</span>          this.abort("Cluster ID has not been set");<a name="line.875"></a>
+<span class="sourceLineNo">876</span>        }<a name="line.876"></a>
+<span class="sourceLineNo">877</span>        LOG.info("ClusterId : " + clusterId);<a name="line.877"></a>
+<span class="sourceLineNo">878</span>      } catch (KeeperException e) {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>        this.abort("Failed to retrieve Cluster ID", e);<a name="line.879"></a>
+<span class="sourceLineNo">880</span>      }<a name="line.880"></a>
+<span class="sourceLineNo">881</span>    }<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
 <span class="sourceLineNo">883</span>    waitForMasterActive();<a name="line.883"></a>
 <span class="sourceLineNo">884</span>    if (isStopped() || isAborted()) {<a name="line.884"></a>
 <span class="sourceLineNo">885</span>      return; // No need for further initialization<a name="line.885"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html
index e074a8c..8cc5add 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html
@@ -722,172 +722,172 @@
 <span class="sourceLineNo">714</span>      "hbase.regionserver.kerberos.principal", host);<a name="line.714"></a>
 <span class="sourceLineNo">715</span>  }<a name="line.715"></a>
 <span class="sourceLineNo">716</span><a name="line.716"></a>
-<span class="sourceLineNo">717</span>  protected void waitForMasterActive() {<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
-<span class="sourceLineNo">719</span><a name="line.719"></a>
-<span class="sourceLineNo">720</span>  protected String getProcessName() {<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    return REGIONSERVER;<a name="line.721"></a>
-<span class="sourceLineNo">722</span>  }<a name="line.722"></a>
+<span class="sourceLineNo">717</span><a name="line.717"></a>
+<span class="sourceLineNo">718</span>  /**<a name="line.718"></a>
+<span class="sourceLineNo">719</span>   * Wait for an active Master.<a name="line.719"></a>
+<span class="sourceLineNo">720</span>   * See override in Master superclass for how it is used.<a name="line.720"></a>
+<span class="sourceLineNo">721</span>   */<a name="line.721"></a>
+<span class="sourceLineNo">722</span>  protected void waitForMasterActive() {}<a name="line.722"></a>
 <span class="sourceLineNo">723</span><a name="line.723"></a>
-<span class="sourceLineNo">724</span>  protected boolean canCreateBaseZNode() {<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    return this.masterless;<a name="line.725"></a>
+<span class="sourceLineNo">724</span>  protected String getProcessName() {<a name="line.724"></a>
+<span class="sourceLineNo">725</span>    return REGIONSERVER;<a name="line.725"></a>
 <span class="sourceLineNo">726</span>  }<a name="line.726"></a>
 <span class="sourceLineNo">727</span><a name="line.727"></a>
-<span class="sourceLineNo">728</span>  protected boolean canUpdateTableDescriptor() {<a name="line.728"></a>
-<span class="sourceLineNo">729</span>    return false;<a name="line.729"></a>
+<span class="sourceLineNo">728</span>  protected boolean canCreateBaseZNode() {<a name="line.728"></a>
+<span class="sourceLineNo">729</span>    return this.masterless;<a name="line.729"></a>
 <span class="sourceLineNo">730</span>  }<a name="line.730"></a>
 <span class="sourceLineNo">731</span><a name="line.731"></a>
-<span class="sourceLineNo">732</span>  protected RSRpcServices createRpcServices() throws IOException {<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    return new RSRpcServices(this);<a name="line.733"></a>
+<span class="sourceLineNo">732</span>  protected boolean canUpdateTableDescriptor() {<a name="line.732"></a>
+<span class="sourceLineNo">733</span>    return false;<a name="line.733"></a>
 <span class="sourceLineNo">734</span>  }<a name="line.734"></a>
 <span class="sourceLineNo">735</span><a name="line.735"></a>
-<span class="sourceLineNo">736</span>  protected void configureInfoServer() {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    infoServer.addServlet("rs-status", "/rs-status", RSStatusServlet.class);<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    infoServer.setAttribute(REGIONSERVER, this);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>  }<a name="line.739"></a>
-<span class="sourceLineNo">740</span><a name="line.740"></a>
-<span class="sourceLineNo">741</span>  protected Class&lt;? extends HttpServlet&gt; getDumpServlet() {<a name="line.741"></a>
-<span class="sourceLineNo">742</span>    return RSDumpServlet.class;<a name="line.742"></a>
+<span class="sourceLineNo">736</span>  protected RSRpcServices createRpcServices() throws IOException {<a name="line.736"></a>
+<span class="sourceLineNo">737</span>    return new RSRpcServices(this);<a name="line.737"></a>
+<span class="sourceLineNo">738</span>  }<a name="line.738"></a>
+<span class="sourceLineNo">739</span><a name="line.739"></a>
+<span class="sourceLineNo">740</span>  protected void configureInfoServer() {<a name="line.740"></a>
+<span class="sourceLineNo">741</span>    infoServer.addServlet("rs-status", "/rs-status", RSStatusServlet.class);<a name="line.741"></a>
+<span class="sourceLineNo">742</span>    infoServer.setAttribute(REGIONSERVER, this);<a name="line.742"></a>
 <span class="sourceLineNo">743</span>  }<a name="line.743"></a>
 <span class="sourceLineNo">744</span><a name="line.744"></a>
-<span class="sourceLineNo">745</span>  @Override<a name="line.745"></a>
-<span class="sourceLineNo">746</span>  public boolean registerService(com.google.protobuf.Service instance) {<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    /*<a name="line.747"></a>
-<span class="sourceLineNo">748</span>     * No stacking of instances is allowed for a single executorService name<a name="line.748"></a>
-<span class="sourceLineNo">749</span>     */<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    com.google.protobuf.Descriptors.ServiceDescriptor serviceDesc =<a name="line.750"></a>
-<span class="sourceLineNo">751</span>        instance.getDescriptorForType();<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    String serviceName = CoprocessorRpcUtils.getServiceName(serviceDesc);<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    if (coprocessorServiceHandlers.containsKey(serviceName)) {<a name="line.753"></a>
-<span class="sourceLineNo">754</span>      LOG.error("Coprocessor executorService " + serviceName<a name="line.754"></a>
-<span class="sourceLineNo">755</span>          + " already registered, rejecting request from " + instance);<a name="line.755"></a>
-<span class="sourceLineNo">756</span>      return false;<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    }<a name="line.757"></a>
-<span class="sourceLineNo">758</span><a name="line.758"></a>
-<span class="sourceLineNo">759</span>    coprocessorServiceHandlers.put(serviceName, instance);<a name="line.759"></a>
-<span class="sourceLineNo">760</span>    if (LOG.isDebugEnabled()) {<a name="line.760"></a>
-<span class="sourceLineNo">761</span>      LOG.debug("Registered regionserver coprocessor executorService: executorService=" + serviceName);<a name="line.761"></a>
-<span class="sourceLineNo">762</span>    }<a name="line.762"></a>
-<span class="sourceLineNo">763</span>    return true;<a name="line.763"></a>
-<span class="sourceLineNo">764</span>  }<a name="line.764"></a>
-<span class="sourceLineNo">765</span><a name="line.765"></a>
-<span class="sourceLineNo">766</span>  /**<a name="line.766"></a>
-<span class="sourceLineNo">767</span>   * Create a 'smarter' Connection, one that is capable of by-passing RPC if the request is to<a name="line.767"></a>
-<span class="sourceLineNo">768</span>   * the local server; i.e. a short-circuit Connection. Safe to use going to local or remote<a name="line.768"></a>
-<span class="sourceLineNo">769</span>   * server. Create this instance in a method can be intercepted and mocked in tests.<a name="line.769"></a>
-<span class="sourceLineNo">770</span>   * @throws IOException<a name="line.770"></a>
-<span class="sourceLineNo">771</span>   */<a name="line.771"></a>
-<span class="sourceLineNo">772</span>  @VisibleForTesting<a name="line.772"></a>
-<span class="sourceLineNo">773</span>  protected ClusterConnection createClusterConnection() throws IOException {<a name="line.773"></a>
-<span class="sourceLineNo">774</span>    Configuration conf = this.conf;<a name="line.774"></a>
-<span class="sourceLineNo">775</span>    if (conf.get(HConstants.CLIENT_ZOOKEEPER_QUORUM) != null) {<a name="line.775"></a>
-<span class="sourceLineNo">776</span>      // Use server ZK cluster for server-issued connections, so we clone<a name="line.776"></a>
-<span class="sourceLineNo">777</span>      // the conf and unset the client ZK related properties<a name="line.777"></a>
-<span class="sourceLineNo">778</span>      conf = new Configuration(this.conf);<a name="line.778"></a>
-<span class="sourceLineNo">779</span>      conf.unset(HConstants.CLIENT_ZOOKEEPER_QUORUM);<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    }<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    // Create a cluster connection that when appropriate, can short-circuit and go directly to the<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    // local server if the request is to the local server bypassing RPC. Can be used for both local<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    // and remote invocations.<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    return ConnectionUtils.createShortCircuitConnection(conf, null, userProvider.getCurrent(),<a name="line.784"></a>
-<span class="sourceLineNo">785</span>      serverName, rpcServices, rpcServices);<a name="line.785"></a>
-<span class="sourceLineNo">786</span>  }<a name="line.786"></a>
-<span class="sourceLineNo">787</span><a name="line.787"></a>
-<span class="sourceLineNo">788</span>  /**<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * Run test on configured codecs to make sure supporting libs are in place.<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   * @param c<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   * @throws IOException<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   */<a name="line.792"></a>
-<span class="sourceLineNo">793</span>  private static void checkCodecs(final Configuration c) throws IOException {<a name="line.793"></a>
-<span class="sourceLineNo">794</span>    // check to see if the codec list is available:<a name="line.794"></a>
-<span class="sourceLineNo">795</span>    String [] codecs = c.getStrings("hbase.regionserver.codecs", (String[])null);<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    if (codecs == null) return;<a name="line.796"></a>
-<span class="sourceLineNo">797</span>    for (String codec : codecs) {<a name="line.797"></a>
-<span class="sourceLineNo">798</span>      if (!CompressionTest.testCompression(codec)) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>        throw new IOException("Compression codec " + codec +<a name="line.799"></a>
-<span class="sourceLineNo">800</span>          " not supported, aborting RS construction");<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      }<a name="line.801"></a>
-<span class="sourceLineNo">802</span>    }<a name="line.802"></a>
-<span class="sourceLineNo">803</span>  }<a name="line.803"></a>
-<span class="sourceLineNo">804</span><a name="line.804"></a>
-<span class="sourceLineNo">805</span>  public String getClusterId() {<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    return this.clusterId;<a name="line.806"></a>
+<span class="sourceLineNo">745</span>  protected Class&lt;? extends HttpServlet&gt; getDumpServlet() {<a name="line.745"></a>
+<span class="sourceLineNo">746</span>    return RSDumpServlet.class;<a name="line.746"></a>
+<span class="sourceLineNo">747</span>  }<a name="line.747"></a>
+<span class="sourceLineNo">748</span><a name="line.748"></a>
+<span class="sourceLineNo">749</span>  @Override<a name="line.749"></a>
+<span class="sourceLineNo">750</span>  public boolean registerService(com.google.protobuf.Service instance) {<a name="line.750"></a>
+<span class="sourceLineNo">751</span>    /*<a name="line.751"></a>
+<span class="sourceLineNo">752</span>     * No stacking of instances is allowed for a single executorService name<a name="line.752"></a>
+<span class="sourceLineNo">753</span>     */<a name="line.753"></a>
+<span class="sourceLineNo">754</span>    com.google.protobuf.Descriptors.ServiceDescriptor serviceDesc =<a name="line.754"></a>
+<span class="sourceLineNo">755</span>        instance.getDescriptorForType();<a name="line.755"></a>
+<span class="sourceLineNo">756</span>    String serviceName = CoprocessorRpcUtils.getServiceName(serviceDesc);<a name="line.756"></a>
+<span class="sourceLineNo">757</span>    if (coprocessorServiceHandlers.containsKey(serviceName)) {<a name="line.757"></a>
+<span class="sourceLineNo">758</span>      LOG.error("Coprocessor executorService " + serviceName<a name="line.758"></a>
+<span class="sourceLineNo">759</span>          + " already registered, rejecting request from " + instance);<a name="line.759"></a>
+<span class="sourceLineNo">760</span>      return false;<a name="line.760"></a>
+<span class="sourceLineNo">761</span>    }<a name="line.761"></a>
+<span class="sourceLineNo">762</span><a name="line.762"></a>
+<span class="sourceLineNo">763</span>    coprocessorServiceHandlers.put(serviceName, instance);<a name="line.763"></a>
+<span class="sourceLineNo">764</span>    if (LOG.isDebugEnabled()) {<a name="line.764"></a>
+<span class="sourceLineNo">765</span>      LOG.debug("Registered regionserver coprocessor executorService: executorService=" + serviceName);<a name="line.765"></a>
+<span class="sourceLineNo">766</span>    }<a name="line.766"></a>
+<span class="sourceLineNo">767</span>    return true;<a name="line.767"></a>
+<span class="sourceLineNo">768</span>  }<a name="line.768"></a>
+<span class="sourceLineNo">769</span><a name="line.769"></a>
+<span class="sourceLineNo">770</span>  /**<a name="line.770"></a>
+<span class="sourceLineNo">771</span>   * Create a 'smarter' Connection, one that is capable of by-passing RPC if the request is to<a name="line.771"></a>
+<span class="sourceLineNo">772</span>   * the local server; i.e. a short-circuit Connection. Safe to use going to local or remote<a name="line.772"></a>
+<span class="sourceLineNo">773</span>   * server. Create this instance in a method can be intercepted and mocked in tests.<a name="line.773"></a>
+<span class="sourceLineNo">774</span>   * @throws IOException<a name="line.774"></a>
+<span class="sourceLineNo">775</span>   */<a name="line.775"></a>
+<span class="sourceLineNo">776</span>  @VisibleForTesting<a name="line.776"></a>
+<span class="sourceLineNo">777</span>  protected ClusterConnection createClusterConnection() throws IOException {<a name="line.777"></a>
+<span class="sourceLineNo">778</span>    Configuration conf = this.conf;<a name="line.778"></a>
+<span class="sourceLineNo">779</span>    if (conf.get(HConstants.CLIENT_ZOOKEEPER_QUORUM) != null) {<a name="line.779"></a>
+<span class="sourceLineNo">780</span>      // Use server ZK cluster for server-issued connections, so we clone<a name="line.780"></a>
+<span class="sourceLineNo">781</span>      // the conf and unset the client ZK related properties<a name="line.781"></a>
+<span class="sourceLineNo">782</span>      conf = new Configuration(this.conf);<a name="line.782"></a>
+<span class="sourceLineNo">783</span>      conf.unset(HConstants.CLIENT_ZOOKEEPER_QUORUM);<a name="line.783"></a>
+<span class="sourceLineNo">784</span>    }<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    // Create a cluster connection that when appropriate, can short-circuit and go directly to the<a name="line.785"></a>
+<span class="sourceLineNo">786</span>    // local server if the request is to the local server bypassing RPC. Can be used for both local<a name="line.786"></a>
+<span class="sourceLineNo">787</span>    // and remote invocations.<a name="line.787"></a>
+<span class="sourceLineNo">788</span>    return ConnectionUtils.createShortCircuitConnection(conf, null, userProvider.getCurrent(),<a name="line.788"></a>
+<span class="sourceLineNo">789</span>      serverName, rpcServices, rpcServices);<a name="line.789"></a>
+<span class="sourceLineNo">790</span>  }<a name="line.790"></a>
+<span class="sourceLineNo">791</span><a name="line.791"></a>
+<span class="sourceLineNo">792</span>  /**<a name="line.792"></a>
+<span class="sourceLineNo">793</span>   * Run test on configured codecs to make sure supporting libs are in place.<a name="line.793"></a>
+<span class="sourceLineNo">794</span>   * @param c<a name="line.794"></a>
+<span class="sourceLineNo">795</span>   * @throws IOException<a name="line.795"></a>
+<span class="sourceLineNo">796</span>   */<a name="line.796"></a>
+<span class="sourceLineNo">797</span>  private static void checkCodecs(final Configuration c) throws IOException {<a name="line.797"></a>
+<span class="sourceLineNo">798</span>    // check to see if the codec list is available:<a name="line.798"></a>
+<span class="sourceLineNo">799</span>    String [] codecs = c.getStrings("hbase.regionserver.codecs", (String[])null);<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    if (codecs == null) return;<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    for (String codec : codecs) {<a name="line.801"></a>
+<span class="sourceLineNo">802</span>      if (!CompressionTest.testCompression(codec)) {<a name="line.802"></a>
+<span class="sourceLineNo">803</span>        throw new IOException("Compression codec " + codec +<a name="line.803"></a>
+<span class="sourceLineNo">804</span>          " not supported, aborting RS construction");<a name="line.804"></a>
+<span class="sourceLineNo">805</span>      }<a name="line.805"></a>
+<span class="sourceLineNo">806</span>    }<a name="line.806"></a>
 <span class="sourceLineNo">807</span>  }<a name="line.807"></a>
 <span class="sourceLineNo">808</span><a name="line.808"></a>
-<span class="sourceLineNo">809</span>  /**<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * Setup our cluster connection if not already initialized.<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   * @throws IOException<a name="line.811"></a>
-<span class="sourceLineNo">812</span>   */<a name="line.812"></a>
-<span class="sourceLineNo">813</span>  protected synchronized void setupClusterConnection() throws IOException {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    if (clusterConnection == null) {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>      clusterConnection = createClusterConnection();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      metaTableLocator = new MetaTableLocator();<a name="line.816"></a>
-<span class="sourceLineNo">817</span>    }<a name="line.817"></a>
-<span class="sourceLineNo">818</span>  }<a name="line.818"></a>
-<span class="sourceLineNo">819</span><a name="line.819"></a>
-<span class="sourceLineNo">820</span>  /**<a name="line.820"></a>
-<span class="sourceLineNo">821</span>   * All initialization needed before we go register with Master.&lt;br&gt;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>   * Do bare minimum. Do bulk of initializations AFTER we've connected to the Master.&lt;br&gt;<a name="line.822"></a>
-<span class="sourceLineNo">823</span>   * In here we just put up the RpcServer, setup Connection, and ZooKeeper.<a name="line.823"></a>
-<span class="sourceLineNo">824</span>   */<a name="line.824"></a>
-<span class="sourceLineNo">825</span>  private void preRegistrationInitialization() {<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    try {<a name="line.826"></a>
-<span class="sourceLineNo">827</span>      initializeZooKeeper();<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      setupClusterConnection();<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      // Setup RPC client for master communication<a name="line.829"></a>
-<span class="sourceLineNo">830</span>      this.rpcClient = RpcClientFactory.createClient(conf, clusterId, new InetSocketAddress(<a name="line.830"></a>
-<span class="sourceLineNo">831</span>          this.rpcServices.isa.getAddress(), 0), clusterConnection.getConnectionMetrics());<a name="line.831"></a>
-<span class="sourceLineNo">832</span>    } catch (Throwable t) {<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      // Call stop if error or process will stick around for ever since server<a name="line.833"></a>
-<span class="sourceLineNo">834</span>      // puts up non-daemon threads.<a name="line.834"></a>
-<span class="sourceLineNo">835</span>      this.rpcServices.stop();<a name="line.835"></a>
-<span class="sourceLineNo">836</span>      abort("Initialization of RS failed.  Hence aborting RS.", t);<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    }<a name="line.837"></a>
-<span class="sourceLineNo">838</span>  }<a name="line.838"></a>
-<span class="sourceLineNo">839</span><a name="line.839"></a>
-<span class="sourceLineNo">840</span>  /**<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * Bring up connection to zk ensemble and then wait until a master for this cluster and then after<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   * that, wait until cluster 'up' flag has been set. This is the order in which master does things.<a name="line.842"></a>
-<span class="sourceLineNo">843</span>   * &lt;p&gt;<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   * Finally open long-living server short-circuit connection.<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   */<a name="line.845"></a>
-<span class="sourceLineNo">846</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE",<a name="line.846"></a>
-<span class="sourceLineNo">847</span>    justification="cluster Id znode read would give us correct response")<a name="line.847"></a>
-<span class="sourceLineNo">848</span>  private void initializeZooKeeper() throws IOException, InterruptedException {<a name="line.848"></a>
-<span class="sourceLineNo">849</span>    // Nothing to do in here if no Master in the mix.<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    if (this.masterless) {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      return;<a name="line.851"></a>
-<span class="sourceLineNo">852</span>    }<a name="line.852"></a>
-<span class="sourceLineNo">853</span><a name="line.853"></a>
-<span class="sourceLineNo">854</span>    // Create the master address tracker, register with zk, and start it.  Then<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    // block until a master is available.  No point in starting up if no master<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    // running.<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    blockAndCheckIfStopped(this.masterAddressTracker);<a name="line.857"></a>
-<span class="sourceLineNo">858</span><a name="line.858"></a>
-<span class="sourceLineNo">859</span>    // Wait on cluster being up.  Master will set this flag up in zookeeper<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    // when ready.<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    blockAndCheckIfStopped(this.clusterStatusTracker);<a name="line.861"></a>
+<span class="sourceLineNo">809</span>  public String getClusterId() {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>    return this.clusterId;<a name="line.810"></a>
+<span class="sourceLineNo">811</span>  }<a name="line.811"></a>
+<span class="sourceLineNo">812</span><a name="line.812"></a>
+<span class="sourceLineNo">813</span>  /**<a name="line.813"></a>
+<span class="sourceLineNo">814</span>   * Setup our cluster connection if not already initialized.<a name="line.814"></a>
+<span class="sourceLineNo">815</span>   * @throws IOException<a name="line.815"></a>
+<span class="sourceLineNo">816</span>   */<a name="line.816"></a>
+<span class="sourceLineNo">817</span>  protected synchronized void setupClusterConnection() throws IOException {<a name="line.817"></a>
+<span class="sourceLineNo">818</span>    if (clusterConnection == null) {<a name="line.818"></a>
+<span class="sourceLineNo">819</span>      clusterConnection = createClusterConnection();<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      metaTableLocator = new MetaTableLocator();<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    }<a name="line.821"></a>
+<span class="sourceLineNo">822</span>  }<a name="line.822"></a>
+<span class="sourceLineNo">823</span><a name="line.823"></a>
+<span class="sourceLineNo">824</span>  /**<a name="line.824"></a>
+<span class="sourceLineNo">825</span>   * All initialization needed before we go register with Master.&lt;br&gt;<a name="line.825"></a>
+<span class="sourceLineNo">826</span>   * Do bare minimum. Do bulk of initializations AFTER we've connected to the Master.&lt;br&gt;<a name="line.826"></a>
+<span class="sourceLineNo">827</span>   * In here we just put up the RpcServer, setup Connection, and ZooKeeper.<a name="line.827"></a>
+<span class="sourceLineNo">828</span>   */<a name="line.828"></a>
+<span class="sourceLineNo">829</span>  private void preRegistrationInitialization() {<a name="line.829"></a>
+<span class="sourceLineNo">830</span>    try {<a name="line.830"></a>
+<span class="sourceLineNo">831</span>      initializeZooKeeper();<a name="line.831"></a>
+<span class="sourceLineNo">832</span>      setupClusterConnection();<a name="line.832"></a>
+<span class="sourceLineNo">833</span>      // Setup RPC client for master communication<a name="line.833"></a>
+<span class="sourceLineNo">834</span>      this.rpcClient = RpcClientFactory.createClient(conf, clusterId, new InetSocketAddress(<a name="line.834"></a>
+<span class="sourceLineNo">835</span>          this.rpcServices.isa.getAddress(), 0), clusterConnection.getConnectionMetrics());<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    } catch (Throwable t) {<a name="line.836"></a>
+<span class="sourceLineNo">837</span>      // Call stop if error or process will stick around for ever since server<a name="line.837"></a>
+<span class="sourceLineNo">838</span>      // puts up non-daemon threads.<a name="line.838"></a>
+<span class="sourceLineNo">839</span>      this.rpcServices.stop();<a name="line.839"></a>
+<span class="sourceLineNo">840</span>      abort("Initialization of RS failed.  Hence aborting RS.", t);<a name="line.840"></a>
+<span class="sourceLineNo">841</span>    }<a name="line.841"></a>
+<span class="sourceLineNo">842</span>  }<a name="line.842"></a>
+<span class="sourceLineNo">843</span><a name="line.843"></a>
+<span class="sourceLineNo">844</span>  /**<a name="line.844"></a>
+<span class="sourceLineNo">845</span>   * Bring up connection to zk ensemble and then wait until a master for this cluster and then after<a name="line.845"></a>
+<span class="sourceLineNo">846</span>   * that, wait until cluster 'up' flag has been set. This is the order in which master does things.<a name="line.846"></a>
+<span class="sourceLineNo">847</span>   * &lt;p&gt;<a name="line.847"></a>
+<span class="sourceLineNo">848</span>   * Finally open long-living server short-circuit connection.<a name="line.848"></a>
+<span class="sourceLineNo">849</span>   */<a name="line.849"></a>
+<span class="sourceLineNo">850</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE",<a name="line.850"></a>
+<span class="sourceLineNo">851</span>    justification="cluster Id znode read would give us correct response")<a name="line.851"></a>
+<span class="sourceLineNo">852</span>  private void initializeZooKeeper() throws IOException, InterruptedException {<a name="line.852"></a>
+<span class="sourceLineNo">853</span>    // Nothing to do in here if no Master in the mix.<a name="line.853"></a>
+<span class="sourceLineNo">854</span>    if (this.masterless) {<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      return;<a name="line.855"></a>
+<span class="sourceLineNo">856</span>    }<a name="line.856"></a>
+<span class="sourceLineNo">857</span><a name="line.857"></a>
+<span class="sourceLineNo">858</span>    // Create the master address tracker, register with zk, and start it.  Then<a name="line.858"></a>
+<span class="sourceLineNo">859</span>    // block until a master is available.  No point in starting up if no master<a name="line.859"></a>
+<span class="sourceLineNo">860</span>    // running.<a name="line.860"></a>
+<span class="sourceLineNo">861</span>    blockAndCheckIfStopped(this.masterAddressTracker);<a name="line.861"></a>
 <span class="sourceLineNo">862</span><a name="line.862"></a>
-<span class="sourceLineNo">863</span>    // If we are HMaster then the cluster id should have already been set.<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    if (clusterId == null) {<a name="line.864"></a>
-<span class="sourceLineNo">865</span>      // Retrieve clusterId<a name="line.865"></a>
-<span class="sourceLineNo">866</span>      // Since cluster status is now up<a name="line.866"></a>
-<span class="sourceLineNo">867</span>      // ID should have already been set by HMaster<a name="line.867"></a>
-<span class="sourceLineNo">868</span>      try {<a name="line.868"></a>
-<span class="sourceLineNo">869</span>        clusterId = ZKClusterId.readClusterIdZNode(this.zooKeeper);<a name="line.869"></a>
-<span class="sourceLineNo">870</span>        if (clusterId == null) {<a name="line.870"></a>
-<span class="sourceLineNo">871</span>          this.abort("Cluster ID has not been set");<a name="line.871"></a>
-<span class="sourceLineNo">872</span>        }<a name="line.872"></a>
-<span class="sourceLineNo">873</span>        LOG.info("ClusterId : " + clusterId);<a name="line.873"></a>
-<span class="sourceLineNo">874</span>      } catch (KeeperException e) {<a name="line.874"></a>
-<span class="sourceLineNo">875</span>        this.abort("Failed to retrieve Cluster ID", e);<a name="line.875"></a>
-<span class="sourceLineNo">876</span>      }<a name="line.876"></a>
-<span class="sourceLineNo">877</span>    }<a name="line.877"></a>
-<span class="sourceLineNo">878</span><a name="line.878"></a>
-<span class="sourceLineNo">879</span>    // In case colocated master, wait here till it's active.<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    // So backup masters won't start as regionservers.<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    // This is to avoid showing backup masters as regionservers<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    // in master web UI, or assigning any region to them.<a name="line.882"></a>
+<span class="sourceLineNo">863</span>    // Wait on cluster being up.  Master will set this flag up in zookeeper<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    // when ready.<a name="line.864"></a>
+<span class="sourceLineNo">865</span>    blockAndCheckIfStopped(this.clusterStatusTracker);<a name="line.865"></a>
+<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">867</span>    // If we are HMaster then the cluster id should have already been set.<a name="line.867"></a>
+<span class="sourceLineNo">868</span>    if (clusterId == null) {<a name="line.868"></a>
+<span class="sourceLineNo">869</span>      // Retrieve clusterId<a name="line.869"></a>
+<span class="sourceLineNo">870</span>      // Since cluster status is now up<a name="line.870"></a>
+<span class="sourceLineNo">871</span>      // ID should have already been set by HMaster<a name="line.871"></a>
+<span class="sourceLineNo">872</span>      try {<a name="line.872"></a>
+<span class="sourceLineNo">873</span>        clusterId = ZKClusterId.readClusterIdZNode(this.zooKeeper);<a name="line.873"></a>
+<span class="sourceLineNo">874</span>        if (clusterId == null) {<a name="line.874"></a>
+<span class="sourceLineNo">875</span>          this.abort("Cluster ID has not been set");<a name="line.875"></a>
+<span class="sourceLineNo">876</span>        }<a name="line.876"></a>
+<span class="sourceLineNo">877</span>        LOG.info("ClusterId : " + clusterId);<a name="line.877"></a>
+<span class="sourceLineNo">878</span>      } catch (KeeperException e) {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>        this.abort("Failed to retrieve Cluster ID", e);<a name="line.879"></a>
+<span class="sourceLineNo">880</span>      }<a name="line.880"></a>
+<span class="sourceLineNo">881</span>    }<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
 <span class="sourceLineNo">883</span>    waitForMasterActive();<a name="line.883"></a>
 <span class="sourceLineNo">884</span>    if (isStopped() || isAborted()) {<a name="line.884"></a>
 <span class="sourceLineNo">885</span>      return; // No need for further initialization<a name="line.885"></a>


[23/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html
index 17ea7d8..b56bd67 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html
@@ -542,1814 +542,1813 @@
 <span class="sourceLineNo">534</span>      RpcController controller, ReportRSFatalErrorRequest request) throws ServiceException {<a name="line.534"></a>
 <span class="sourceLineNo">535</span>    String errorText = request.getErrorMessage();<a name="line.535"></a>
 <span class="sourceLineNo">536</span>    ServerName sn = ProtobufUtil.toServerName(request.getServer());<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    String msg = "Region server " + sn<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      + " reported a fatal error:\n" + errorText;<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    LOG.error(msg);<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    master.rsFatals.add(msg);<a name="line.540"></a>
-<span class="sourceLineNo">541</span>    return ReportRSFatalErrorResponse.newBuilder().build();<a name="line.541"></a>
-<span class="sourceLineNo">542</span>  }<a name="line.542"></a>
-<span class="sourceLineNo">543</span><a name="line.543"></a>
-<span class="sourceLineNo">544</span>  @Override<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  public AddColumnResponse addColumn(RpcController controller,<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      AddColumnRequest req) throws ServiceException {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    try {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      long procId = master.addColumn(<a name="line.548"></a>
-<span class="sourceLineNo">549</span>          ProtobufUtil.toTableName(req.getTableName()),<a name="line.549"></a>
-<span class="sourceLineNo">550</span>          ProtobufUtil.toColumnFamilyDescriptor(req.getColumnFamilies()),<a name="line.550"></a>
-<span class="sourceLineNo">551</span>          req.getNonceGroup(),<a name="line.551"></a>
-<span class="sourceLineNo">552</span>          req.getNonce());<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      if (procId == -1) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>        // This mean operation was not performed in server, so do not set any procId<a name="line.554"></a>
-<span class="sourceLineNo">555</span>        return AddColumnResponse.newBuilder().build();<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      } else {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>        return AddColumnResponse.newBuilder().setProcId(procId).build();<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      }<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    } catch (IOException ioe) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      throw new ServiceException(ioe);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    }<a name="line.561"></a>
-<span class="sourceLineNo">562</span>  }<a name="line.562"></a>
-<span class="sourceLineNo">563</span><a name="line.563"></a>
-<span class="sourceLineNo">564</span>  @Override<a name="line.564"></a>
-<span class="sourceLineNo">565</span>  public AssignRegionResponse assignRegion(RpcController controller,<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      AssignRegionRequest req) throws ServiceException {<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    try {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      master.checkInitialized();<a name="line.568"></a>
-<span class="sourceLineNo">569</span><a name="line.569"></a>
-<span class="sourceLineNo">570</span>      final RegionSpecifierType type = req.getRegion().getType();<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      if (type != RegionSpecifierType.REGION_NAME) {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>        LOG.warn("assignRegion specifier type: expected: " + RegionSpecifierType.REGION_NAME<a name="line.572"></a>
-<span class="sourceLineNo">573</span>          + " actual: " + type);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>      final byte[] regionName = req.getRegion().getValue().toByteArray();<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      final RegionInfo regionInfo = master.getAssignmentManager().getRegionInfo(regionName);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      if (regionInfo == null) throw new UnknownRegionException(Bytes.toStringBinary(regionName));<a name="line.578"></a>
-<span class="sourceLineNo">579</span><a name="line.579"></a>
-<span class="sourceLineNo">580</span>      final AssignRegionResponse arr = AssignRegionResponse.newBuilder().build();<a name="line.580"></a>
-<span class="sourceLineNo">581</span>      if (master.cpHost != null) {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>        master.cpHost.preAssign(regionInfo);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>      }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>      LOG.info(master.getClientIdAuditPrefix() + " assign " + regionInfo.getRegionNameAsString());<a name="line.584"></a>
-<span class="sourceLineNo">585</span>      master.getAssignmentManager().assign(regionInfo);<a name="line.585"></a>
-<span class="sourceLineNo">586</span>      if (master.cpHost != null) {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>        master.cpHost.postAssign(regionInfo);<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      }<a name="line.588"></a>
-<span class="sourceLineNo">589</span>      return arr;<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    } catch (IOException ioe) {<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      throw new ServiceException(ioe);<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    }<a name="line.592"></a>
-<span class="sourceLineNo">593</span>  }<a name="line.593"></a>
+<span class="sourceLineNo">537</span>    String msg = sn + " reported a fatal error:\n" + errorText;<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    LOG.warn(msg);<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    master.rsFatals.add(msg);<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    return ReportRSFatalErrorResponse.newBuilder().build();<a name="line.540"></a>
+<span class="sourceLineNo">541</span>  }<a name="line.541"></a>
+<span class="sourceLineNo">542</span><a name="line.542"></a>
+<span class="sourceLineNo">543</span>  @Override<a name="line.543"></a>
+<span class="sourceLineNo">544</span>  public AddColumnResponse addColumn(RpcController controller,<a name="line.544"></a>
+<span class="sourceLineNo">545</span>      AddColumnRequest req) throws ServiceException {<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    try {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      long procId = master.addColumn(<a name="line.547"></a>
+<span class="sourceLineNo">548</span>          ProtobufUtil.toTableName(req.getTableName()),<a name="line.548"></a>
+<span class="sourceLineNo">549</span>          ProtobufUtil.toColumnFamilyDescriptor(req.getColumnFamilies()),<a name="line.549"></a>
+<span class="sourceLineNo">550</span>          req.getNonceGroup(),<a name="line.550"></a>
+<span class="sourceLineNo">551</span>          req.getNonce());<a name="line.551"></a>
+<span class="sourceLineNo">552</span>      if (procId == -1) {<a name="line.552"></a>
+<span class="sourceLineNo">553</span>        // This mean operation was not performed in server, so do not set any procId<a name="line.553"></a>
+<span class="sourceLineNo">554</span>        return AddColumnResponse.newBuilder().build();<a name="line.554"></a>
+<span class="sourceLineNo">555</span>      } else {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>        return AddColumnResponse.newBuilder().setProcId(procId).build();<a name="line.556"></a>
+<span class="sourceLineNo">557</span>      }<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    } catch (IOException ioe) {<a name="line.558"></a>
+<span class="sourceLineNo">559</span>      throw new ServiceException(ioe);<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    }<a name="line.560"></a>
+<span class="sourceLineNo">561</span>  }<a name="line.561"></a>
+<span class="sourceLineNo">562</span><a name="line.562"></a>
+<span class="sourceLineNo">563</span>  @Override<a name="line.563"></a>
+<span class="sourceLineNo">564</span>  public AssignRegionResponse assignRegion(RpcController controller,<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      AssignRegionRequest req) throws ServiceException {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    try {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      master.checkInitialized();<a name="line.567"></a>
+<span class="sourceLineNo">568</span><a name="line.568"></a>
+<span class="sourceLineNo">569</span>      final RegionSpecifierType type = req.getRegion().getType();<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      if (type != RegionSpecifierType.REGION_NAME) {<a name="line.570"></a>
+<span class="sourceLineNo">571</span>        LOG.warn("assignRegion specifier type: expected: " + RegionSpecifierType.REGION_NAME<a name="line.571"></a>
+<span class="sourceLineNo">572</span>          + " actual: " + type);<a name="line.572"></a>
+<span class="sourceLineNo">573</span>      }<a name="line.573"></a>
+<span class="sourceLineNo">574</span><a name="line.574"></a>
+<span class="sourceLineNo">575</span>      final byte[] regionName = req.getRegion().getValue().toByteArray();<a name="line.575"></a>
+<span class="sourceLineNo">576</span>      final RegionInfo regionInfo = master.getAssignmentManager().getRegionInfo(regionName);<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      if (regionInfo == null) throw new UnknownRegionException(Bytes.toStringBinary(regionName));<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>      final AssignRegionResponse arr = AssignRegionResponse.newBuilder().build();<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      if (master.cpHost != null) {<a name="line.580"></a>
+<span class="sourceLineNo">581</span>        master.cpHost.preAssign(regionInfo);<a name="line.581"></a>
+<span class="sourceLineNo">582</span>      }<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      LOG.info(master.getClientIdAuditPrefix() + " assign " + regionInfo.getRegionNameAsString());<a name="line.583"></a>
+<span class="sourceLineNo">584</span>      master.getAssignmentManager().assign(regionInfo);<a name="line.584"></a>
+<span class="sourceLineNo">585</span>      if (master.cpHost != null) {<a name="line.585"></a>
+<span class="sourceLineNo">586</span>        master.cpHost.postAssign(regionInfo);<a name="line.586"></a>
+<span class="sourceLineNo">587</span>      }<a name="line.587"></a>
+<span class="sourceLineNo">588</span>      return arr;<a name="line.588"></a>
+<span class="sourceLineNo">589</span>    } catch (IOException ioe) {<a name="line.589"></a>
+<span class="sourceLineNo">590</span>      throw new ServiceException(ioe);<a name="line.590"></a>
+<span class="sourceLineNo">591</span>    }<a name="line.591"></a>
+<span class="sourceLineNo">592</span>  }<a name="line.592"></a>
+<span class="sourceLineNo">593</span><a name="line.593"></a>
 <span class="sourceLineNo">594</span><a name="line.594"></a>
-<span class="sourceLineNo">595</span><a name="line.595"></a>
-<span class="sourceLineNo">596</span>  @Override<a name="line.596"></a>
-<span class="sourceLineNo">597</span>  public BalanceResponse balance(RpcController controller,<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      BalanceRequest request) throws ServiceException {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    try {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      return BalanceResponse.newBuilder().setBalancerRan(master.balance(<a name="line.600"></a>
-<span class="sourceLineNo">601</span>        request.hasForce() ? request.getForce() : false)).build();<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    } catch (IOException ex) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      throw new ServiceException(ex);<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    }<a name="line.604"></a>
-<span class="sourceLineNo">605</span>  }<a name="line.605"></a>
-<span class="sourceLineNo">606</span><a name="line.606"></a>
-<span class="sourceLineNo">607</span>  @Override<a name="line.607"></a>
-<span class="sourceLineNo">608</span>  public CreateNamespaceResponse createNamespace(RpcController controller,<a name="line.608"></a>
-<span class="sourceLineNo">609</span>     CreateNamespaceRequest request) throws ServiceException {<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    try {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      long procId = master.createNamespace(<a name="line.611"></a>
-<span class="sourceLineNo">612</span>        ProtobufUtil.toNamespaceDescriptor(request.getNamespaceDescriptor()),<a name="line.612"></a>
-<span class="sourceLineNo">613</span>        request.getNonceGroup(),<a name="line.613"></a>
-<span class="sourceLineNo">614</span>        request.getNonce());<a name="line.614"></a>
-<span class="sourceLineNo">615</span>      return CreateNamespaceResponse.newBuilder().setProcId(procId).build();<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    } catch (IOException e) {<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      throw new ServiceException(e);<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    }<a name="line.618"></a>
-<span class="sourceLineNo">619</span>  }<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>  @Override<a name="line.621"></a>
-<span class="sourceLineNo">622</span>  public CreateTableResponse createTable(RpcController controller, CreateTableRequest req)<a name="line.622"></a>
-<span class="sourceLineNo">623</span>  throws ServiceException {<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    TableDescriptor tableDescriptor = ProtobufUtil.toTableDescriptor(req.getTableSchema());<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    byte [][] splitKeys = ProtobufUtil.getSplitKeysArray(req);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    try {<a name="line.626"></a>
-<span class="sourceLineNo">627</span>      long procId =<a name="line.627"></a>
-<span class="sourceLineNo">628</span>          master.createTable(tableDescriptor, splitKeys, req.getNonceGroup(), req.getNonce());<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      LOG.info(master.getClientIdAuditPrefix() + " procedure request for creating table: " +<a name="line.629"></a>
-<span class="sourceLineNo">630</span>              req.getTableSchema().getTableName() + " procId is: " + procId);<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      return CreateTableResponse.newBuilder().setProcId(procId).build();<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    } catch (IOException ioe) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      throw new ServiceException(ioe);<a name="line.633"></a>
-<span class="sourceLineNo">634</span>    }<a name="line.634"></a>
-<span class="sourceLineNo">635</span>  }<a name="line.635"></a>
-<span class="sourceLineNo">636</span><a name="line.636"></a>
-<span class="sourceLineNo">637</span>  @Override<a name="line.637"></a>
-<span class="sourceLineNo">638</span>  public DeleteColumnResponse deleteColumn(RpcController controller,<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      DeleteColumnRequest req) throws ServiceException {<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    try {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      long procId = master.deleteColumn(<a name="line.641"></a>
-<span class="sourceLineNo">642</span>        ProtobufUtil.toTableName(req.getTableName()),<a name="line.642"></a>
-<span class="sourceLineNo">643</span>        req.getColumnName().toByteArray(),<a name="line.643"></a>
-<span class="sourceLineNo">644</span>        req.getNonceGroup(),<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        req.getNonce());<a name="line.645"></a>
-<span class="sourceLineNo">646</span>      if (procId == -1) {<a name="line.646"></a>
-<span class="sourceLineNo">647</span>        // This mean operation was not performed in server, so do not set any procId<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        return DeleteColumnResponse.newBuilder().build();<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      } else {<a name="line.649"></a>
-<span class="sourceLineNo">650</span>        return DeleteColumnResponse.newBuilder().setProcId(procId).build();<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      }<a name="line.651"></a>
-<span class="sourceLineNo">652</span>    } catch (IOException ioe) {<a name="line.652"></a>
-<span class="sourceLineNo">653</span>      throw new ServiceException(ioe);<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    }<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
-<span class="sourceLineNo">656</span><a name="line.656"></a>
-<span class="sourceLineNo">657</span>  @Override<a name="line.657"></a>
-<span class="sourceLineNo">658</span>  public DeleteNamespaceResponse deleteNamespace(RpcController controller,<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      DeleteNamespaceRequest request) throws ServiceException {<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    try {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      long procId = master.deleteNamespace(<a name="line.661"></a>
-<span class="sourceLineNo">662</span>        request.getNamespaceName(),<a name="line.662"></a>
-<span class="sourceLineNo">663</span>        request.getNonceGroup(),<a name="line.663"></a>
-<span class="sourceLineNo">664</span>        request.getNonce());<a name="line.664"></a>
-<span class="sourceLineNo">665</span>      return DeleteNamespaceResponse.newBuilder().setProcId(procId).build();<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    } catch (IOException e) {<a name="line.666"></a>
-<span class="sourceLineNo">667</span>      throw new ServiceException(e);<a name="line.667"></a>
-<span class="sourceLineNo">668</span>    }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>  }<a name="line.669"></a>
-<span class="sourceLineNo">670</span><a name="line.670"></a>
-<span class="sourceLineNo">671</span>  /**<a name="line.671"></a>
-<span class="sourceLineNo">672</span>   * Execute Delete Snapshot operation.<a name="line.672"></a>
-<span class="sourceLineNo">673</span>   * @return DeleteSnapshotResponse (a protobuf wrapped void) if the snapshot existed and was<a name="line.673"></a>
-<span class="sourceLineNo">674</span>   *    deleted properly.<a name="line.674"></a>
-<span class="sourceLineNo">675</span>   * @throws ServiceException wrapping SnapshotDoesNotExistException if specified snapshot did not<a name="line.675"></a>
-<span class="sourceLineNo">676</span>   *    exist.<a name="line.676"></a>
-<span class="sourceLineNo">677</span>   */<a name="line.677"></a>
-<span class="sourceLineNo">678</span>  @Override<a name="line.678"></a>
-<span class="sourceLineNo">679</span>  public DeleteSnapshotResponse deleteSnapshot(RpcController controller,<a name="line.679"></a>
-<span class="sourceLineNo">680</span>      DeleteSnapshotRequest request) throws ServiceException {<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    try {<a name="line.681"></a>
-<span class="sourceLineNo">682</span>      master.checkInitialized();<a name="line.682"></a>
-<span class="sourceLineNo">683</span>      master.snapshotManager.checkSnapshotSupport();<a name="line.683"></a>
-<span class="sourceLineNo">684</span><a name="line.684"></a>
-<span class="sourceLineNo">685</span>      LOG.info(master.getClientIdAuditPrefix() + " delete " + request.getSnapshot());<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      master.snapshotManager.deleteSnapshot(request.getSnapshot());<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      return DeleteSnapshotResponse.newBuilder().build();<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    } catch (IOException e) {<a name="line.688"></a>
-<span class="sourceLineNo">689</span>      throw new ServiceException(e);<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    }<a name="line.690"></a>
-<span class="sourceLineNo">691</span>  }<a name="line.691"></a>
-<span class="sourceLineNo">692</span><a name="line.692"></a>
-<span class="sourceLineNo">693</span>  @Override<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  public DeleteTableResponse deleteTable(RpcController controller,<a name="line.694"></a>
-<span class="sourceLineNo">695</span>      DeleteTableRequest request) throws ServiceException {<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    try {<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      long procId = master.deleteTable(ProtobufUtil.toTableName(<a name="line.697"></a>
-<span class="sourceLineNo">698</span>          request.getTableName()), request.getNonceGroup(), request.getNonce());<a name="line.698"></a>
-<span class="sourceLineNo">699</span>      return DeleteTableResponse.newBuilder().setProcId(procId).build();<a name="line.699"></a>
-<span class="sourceLineNo">700</span>    } catch (IOException ioe) {<a name="line.700"></a>
-<span class="sourceLineNo">701</span>      throw new ServiceException(ioe);<a name="line.701"></a>
-<span class="sourceLineNo">702</span>    }<a name="line.702"></a>
-<span class="sourceLineNo">703</span>  }<a name="line.703"></a>
-<span class="sourceLineNo">704</span><a name="line.704"></a>
-<span class="sourceLineNo">705</span>  @Override<a name="line.705"></a>
-<span class="sourceLineNo">706</span>  public TruncateTableResponse truncateTable(RpcController controller, TruncateTableRequest request)<a name="line.706"></a>
-<span class="sourceLineNo">707</span>      throws ServiceException {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    try {<a name="line.708"></a>
-<span class="sourceLineNo">709</span>      long procId = master.truncateTable(<a name="line.709"></a>
-<span class="sourceLineNo">710</span>        ProtobufUtil.toTableName(request.getTableName()),<a name="line.710"></a>
-<span class="sourceLineNo">711</span>        request.getPreserveSplits(),<a name="line.711"></a>
-<span class="sourceLineNo">712</span>        request.getNonceGroup(),<a name="line.712"></a>
-<span class="sourceLineNo">713</span>        request.getNonce());<a name="line.713"></a>
-<span class="sourceLineNo">714</span>      return TruncateTableResponse.newBuilder().setProcId(procId).build();<a name="line.714"></a>
-<span class="sourceLineNo">715</span>    } catch (IOException ioe) {<a name="line.715"></a>
-<span class="sourceLineNo">716</span>      throw new ServiceException(ioe);<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    }<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
-<span class="sourceLineNo">719</span><a name="line.719"></a>
-<span class="sourceLineNo">720</span>  @Override<a name="line.720"></a>
-<span class="sourceLineNo">721</span>  public DisableTableResponse disableTable(RpcController controller,<a name="line.721"></a>
-<span class="sourceLineNo">722</span>      DisableTableRequest request) throws ServiceException {<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    try {<a name="line.723"></a>
-<span class="sourceLineNo">724</span>      long procId = master.disableTable(<a name="line.724"></a>
-<span class="sourceLineNo">725</span>        ProtobufUtil.toTableName(request.getTableName()),<a name="line.725"></a>
-<span class="sourceLineNo">726</span>        request.getNonceGroup(),<a name="line.726"></a>
-<span class="sourceLineNo">727</span>        request.getNonce());<a name="line.727"></a>
-<span class="sourceLineNo">728</span>      return DisableTableResponse.newBuilder().setProcId(procId).build();<a name="line.728"></a>
-<span class="sourceLineNo">729</span>    } catch (IOException ioe) {<a name="line.729"></a>
-<span class="sourceLineNo">730</span>      throw new ServiceException(ioe);<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    }<a name="line.731"></a>
-<span class="sourceLineNo">732</span>  }<a name="line.732"></a>
-<span class="sourceLineNo">733</span><a name="line.733"></a>
-<span class="sourceLineNo">734</span>  @Override<a name="line.734"></a>
-<span class="sourceLineNo">735</span>  public EnableCatalogJanitorResponse enableCatalogJanitor(RpcController c,<a name="line.735"></a>
-<span class="sourceLineNo">736</span>      EnableCatalogJanitorRequest req) throws ServiceException {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    rpcPreCheck("enableCatalogJanitor");<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    return EnableCatalogJanitorResponse.newBuilder().setPrevValue(<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      master.catalogJanitorChore.setEnabled(req.getEnable())).build();<a name="line.739"></a>
-<span class="sourceLineNo">740</span>  }<a name="line.740"></a>
-<span class="sourceLineNo">741</span><a name="line.741"></a>
-<span class="sourceLineNo">742</span>  @Override<a name="line.742"></a>
-<span class="sourceLineNo">743</span>  public SetCleanerChoreRunningResponse setCleanerChoreRunning(<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    RpcController c, SetCleanerChoreRunningRequest req) throws ServiceException {<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    rpcPreCheck("setCleanerChoreRunning");<a name="line.745"></a>
-<span class="sourceLineNo">746</span><a name="line.746"></a>
-<span class="sourceLineNo">747</span>    boolean prevValue =<a name="line.747"></a>
-<span class="sourceLineNo">748</span>      master.getLogCleaner().getEnabled() &amp;&amp; master.getHFileCleaner().getEnabled();<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    master.getLogCleaner().setEnabled(req.getOn());<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    master.getHFileCleaner().setEnabled(req.getOn());<a name="line.750"></a>
-<span class="sourceLineNo">751</span>    return SetCleanerChoreRunningResponse.newBuilder().setPrevValue(prevValue).build();<a name="line.751"></a>
-<span class="sourceLineNo">752</span>  }<a name="line.752"></a>
-<span class="sourceLineNo">753</span><a name="line.753"></a>
-<span class="sourceLineNo">754</span>  @Override<a name="line.754"></a>
-<span class="sourceLineNo">755</span>  public EnableTableResponse enableTable(RpcController controller,<a name="line.755"></a>
-<span class="sourceLineNo">756</span>      EnableTableRequest request) throws ServiceException {<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    try {<a name="line.757"></a>
-<span class="sourceLineNo">758</span>      long procId = master.enableTable(<a name="line.758"></a>
-<span class="sourceLineNo">759</span>        ProtobufUtil.toTableName(request.getTableName()),<a name="line.759"></a>
-<span class="sourceLineNo">760</span>        request.getNonceGroup(),<a name="line.760"></a>
-<span class="sourceLineNo">761</span>        request.getNonce());<a name="line.761"></a>
-<span class="sourceLineNo">762</span>      return EnableTableResponse.newBuilder().setProcId(procId).build();<a name="line.762"></a>
-<span class="sourceLineNo">763</span>    } catch (IOException ioe) {<a name="line.763"></a>
-<span class="sourceLineNo">764</span>      throw new ServiceException(ioe);<a name="line.764"></a>
-<span class="sourceLineNo">765</span>    }<a name="line.765"></a>
-<span class="sourceLineNo">766</span>  }<a name="line.766"></a>
-<span class="sourceLineNo">767</span><a name="line.767"></a>
-<span class="sourceLineNo">768</span>  @Override<a name="line.768"></a>
-<span class="sourceLineNo">769</span>  public MergeTableRegionsResponse mergeTableRegions(<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      RpcController c, MergeTableRegionsRequest request) throws ServiceException {<a name="line.770"></a>
-<span class="sourceLineNo">771</span>    try {<a name="line.771"></a>
-<span class="sourceLineNo">772</span>      master.checkInitialized();<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    } catch (IOException ioe) {<a name="line.773"></a>
-<span class="sourceLineNo">774</span>      throw new ServiceException(ioe);<a name="line.774"></a>
-<span class="sourceLineNo">775</span>    }<a name="line.775"></a>
-<span class="sourceLineNo">776</span><a name="line.776"></a>
-<span class="sourceLineNo">777</span>    RegionStates regionStates = master.getAssignmentManager().getRegionStates();<a name="line.777"></a>
-<span class="sourceLineNo">778</span><a name="line.778"></a>
-<span class="sourceLineNo">779</span>    assert(request.getRegionCount() == 2);<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    RegionInfo[] regionsToMerge = new RegionInfo[request.getRegionCount()];<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    for (int i = 0; i &lt; request.getRegionCount(); i++) {<a name="line.781"></a>
-<span class="sourceLineNo">782</span>      final byte[] encodedNameOfRegion = request.getRegion(i).getValue().toByteArray();<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      if (request.getRegion(i).getType() != RegionSpecifierType.ENCODED_REGION_NAME) {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>        LOG.warn("MergeRegions specifier type: expected: "<a name="line.784"></a>
-<span class="sourceLineNo">785</span>          + RegionSpecifierType.ENCODED_REGION_NAME + " actual: region " + i + " ="<a name="line.785"></a>
-<span class="sourceLineNo">786</span>          + request.getRegion(i).getType());<a name="line.786"></a>
-<span class="sourceLineNo">787</span>      }<a name="line.787"></a>
-<span class="sourceLineNo">788</span>      RegionState regionState = regionStates.getRegionState(Bytes.toString(encodedNameOfRegion));<a name="line.788"></a>
-<span class="sourceLineNo">789</span>      if (regionState == null) {<a name="line.789"></a>
-<span class="sourceLineNo">790</span>        throw new ServiceException(<a name="line.790"></a>
-<span class="sourceLineNo">791</span>          new UnknownRegionException(Bytes.toStringBinary(encodedNameOfRegion)));<a name="line.791"></a>
-<span class="sourceLineNo">792</span>      }<a name="line.792"></a>
-<span class="sourceLineNo">793</span>      regionsToMerge[i] = regionState.getRegion();<a name="line.793"></a>
-<span class="sourceLineNo">794</span>    }<a name="line.794"></a>
-<span class="sourceLineNo">795</span><a name="line.795"></a>
-<span class="sourceLineNo">796</span>    try {<a name="line.796"></a>
-<span class="sourceLineNo">797</span>      long procId = master.mergeRegions(<a name="line.797"></a>
-<span class="sourceLineNo">798</span>        regionsToMerge,<a name="line.798"></a>
-<span class="sourceLineNo">799</span>        request.getForcible(),<a name="line.799"></a>
-<span class="sourceLineNo">800</span>        request.getNonceGroup(),<a name="line.800"></a>
-<span class="sourceLineNo">801</span>        request.getNonce());<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      return MergeTableRegionsResponse.newBuilder().setProcId(procId).build();<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    } catch (IOException ioe) {<a name="line.803"></a>
-<span class="sourceLineNo">804</span>      throw new ServiceException(ioe);<a name="line.804"></a>
-<span class="sourceLineNo">805</span>    }<a name="line.805"></a>
-<span class="sourceLineNo">806</span>  }<a name="line.806"></a>
-<span class="sourceLineNo">807</span><a name="line.807"></a>
-<span class="sourceLineNo">808</span>  @Override<a name="line.808"></a>
-<span class="sourceLineNo">809</span>  public SplitTableRegionResponse splitRegion(final RpcController controller,<a name="line.809"></a>
-<span class="sourceLineNo">810</span>      final SplitTableRegionRequest request) throws ServiceException {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    try {<a name="line.811"></a>
-<span class="sourceLineNo">812</span>      long procId = master.splitRegion(<a name="line.812"></a>
-<span class="sourceLineNo">813</span>        ProtobufUtil.toRegionInfo(request.getRegionInfo()),<a name="line.813"></a>
-<span class="sourceLineNo">814</span>        request.hasSplitRow() ? request.getSplitRow().toByteArray() : null,<a name="line.814"></a>
-<span class="sourceLineNo">815</span>        request.getNonceGroup(),<a name="line.815"></a>
-<span class="sourceLineNo">816</span>        request.getNonce());<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      return SplitTableRegionResponse.newBuilder().setProcId(procId).build();<a name="line.817"></a>
-<span class="sourceLineNo">818</span>    } catch (IOException ie) {<a name="line.818"></a>
-<span class="sourceLineNo">819</span>      throw new ServiceException(ie);<a name="line.819"></a>
-<span class="sourceLineNo">820</span>    }<a name="line.820"></a>
-<span class="sourceLineNo">821</span>  }<a name="line.821"></a>
-<span class="sourceLineNo">822</span><a name="line.822"></a>
-<span class="sourceLineNo">823</span>  @Override<a name="line.823"></a>
-<span class="sourceLineNo">824</span>  public ClientProtos.CoprocessorServiceResponse execMasterService(final RpcController controller,<a name="line.824"></a>
-<span class="sourceLineNo">825</span>      final ClientProtos.CoprocessorServiceRequest request) throws ServiceException {<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    rpcPreCheck("execMasterService");<a name="line.826"></a>
-<span class="sourceLineNo">827</span>    try {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      ServerRpcController execController = new ServerRpcController();<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      ClientProtos.CoprocessorServiceCall call = request.getCall();<a name="line.829"></a>
-<span class="sourceLineNo">830</span>      String serviceName = call.getServiceName();<a name="line.830"></a>
-<span class="sourceLineNo">831</span>      String methodName = call.getMethodName();<a name="line.831"></a>
-<span class="sourceLineNo">832</span>      if (!master.coprocessorServiceHandlers.containsKey(serviceName)) {<a name="line.832"></a>
-<span class="sourceLineNo">833</span>        throw new UnknownProtocolException(null,<a name="line.833"></a>
-<span class="sourceLineNo">834</span>          "No registered Master Coprocessor Endpoint found for " + serviceName +<a name="line.834"></a>
-<span class="sourceLineNo">835</span>          ". Has it been enabled?");<a name="line.835"></a>
-<span class="sourceLineNo">836</span>      }<a name="line.836"></a>
-<span class="sourceLineNo">837</span><a name="line.837"></a>
-<span class="sourceLineNo">838</span>      com.google.protobuf.Service service = master.coprocessorServiceHandlers.get(serviceName);<a name="line.838"></a>
-<span class="sourceLineNo">839</span>      com.google.protobuf.Descriptors.ServiceDescriptor serviceDesc = service.getDescriptorForType();<a name="line.839"></a>
-<span class="sourceLineNo">840</span>      com.google.protobuf.Descriptors.MethodDescriptor methodDesc =<a name="line.840"></a>
-<span class="sourceLineNo">841</span>          CoprocessorRpcUtils.getMethodDescriptor(methodName, serviceDesc);<a name="line.841"></a>
-<span class="sourceLineNo">842</span><a name="line.842"></a>
-<span class="sourceLineNo">843</span>      com.google.protobuf.Message execRequest =<a name="line.843"></a>
-<span class="sourceLineNo">844</span>          CoprocessorRpcUtils.getRequest(service, methodDesc, call.getRequest());<a name="line.844"></a>
-<span class="sourceLineNo">845</span>      final com.google.protobuf.Message.Builder responseBuilder =<a name="line.845"></a>
-<span class="sourceLineNo">846</span>          service.getResponsePrototype(methodDesc).newBuilderForType();<a name="line.846"></a>
-<span class="sourceLineNo">847</span>      service.callMethod(methodDesc, execController, execRequest,<a name="line.847"></a>
-<span class="sourceLineNo">848</span>        (message) -&gt; {<a name="line.848"></a>
-<span class="sourceLineNo">849</span>          if (message != null) {<a name="line.849"></a>
-<span class="sourceLineNo">850</span>            responseBuilder.mergeFrom(message);<a name="line.850"></a>
-<span class="sourceLineNo">851</span>          }<a name="line.851"></a>
-<span class="sourceLineNo">852</span>        });<a name="line.852"></a>
-<span class="sourceLineNo">853</span>      com.google.protobuf.Message execResult = responseBuilder.build();<a name="line.853"></a>
-<span class="sourceLineNo">854</span>      if (execController.getFailedOn() != null) {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>        throw execController.getFailedOn();<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      }<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      return CoprocessorRpcUtils.getResponse(execResult, HConstants.EMPTY_BYTE_ARRAY);<a name="line.857"></a>
-<span class="sourceLineNo">858</span>    } catch (IOException ie) {<a name="line.858"></a>
-<span class="sourceLineNo">859</span>      throw new ServiceException(ie);<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    }<a name="line.860"></a>
-<span class="sourceLineNo">861</span>  }<a name="line.861"></a>
-<span class="sourceLineNo">862</span><a name="line.862"></a>
-<span class="sourceLineNo">863</span>  /**<a name="line.863"></a>
-<span class="sourceLineNo">864</span>   * Triggers an asynchronous attempt to run a distributed procedure.<a name="line.864"></a>
-<span class="sourceLineNo">865</span>   * {@inheritDoc}<a name="line.865"></a>
-<span class="sourceLineNo">866</span>   */<a name="line.866"></a>
-<span class="sourceLineNo">867</span>  @Override<a name="line.867"></a>
-<span class="sourceLineNo">868</span>  public ExecProcedureResponse execProcedure(RpcController controller,<a name="line.868"></a>
-<span class="sourceLineNo">869</span>      ExecProcedureRequest request) throws ServiceException {<a name="line.869"></a>
-<span class="sourceLineNo">870</span>    try {<a name="line.870"></a>
-<span class="sourceLineNo">871</span>      master.checkInitialized();<a name="line.871"></a>
-<span class="sourceLineNo">872</span>      ProcedureDescription desc = request.getProcedure();<a name="line.872"></a>
-<span class="sourceLineNo">873</span>      MasterProcedureManager mpm = master.getMasterProcedureManagerHost().getProcedureManager(<a name="line.873"></a>
-<span class="sourceLineNo">874</span>        desc.getSignature());<a name="line.874"></a>
-<span class="sourceLineNo">875</span>      if (mpm == null) {<a name="line.875"></a>
-<span class="sourceLineNo">876</span>        throw new ServiceException(new DoNotRetryIOException("The procedure is not registered: "<a name="line.876"></a>
-<span class="sourceLineNo">877</span>          + desc.getSignature()));<a name="line.877"></a>
-<span class="sourceLineNo">878</span>      }<a name="line.878"></a>
-<span class="sourceLineNo">879</span>      LOG.info(master.getClientIdAuditPrefix() + " procedure request for: " + desc.getSignature());<a name="line.879"></a>
-<span class="sourceLineNo">880</span>      mpm.checkPermissions(desc, accessChecker, RpcServer.getRequestUser().orElse(null));<a name="line.880"></a>
-<span class="sourceLineNo">881</span>      mpm.execProcedure(desc);<a name="line.881"></a>
-<span class="sourceLineNo">882</span>      // send back the max amount of time the client should wait for the procedure<a name="line.882"></a>
-<span class="sourceLineNo">883</span>      // to complete<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      long waitTime = SnapshotDescriptionUtils.DEFAULT_MAX_WAIT_TIME;<a name="line.884"></a>
-<span class="sourceLineNo">885</span>      return ExecProcedureResponse.newBuilder().setExpectedTimeout(<a name="line.885"></a>
-<span class="sourceLineNo">886</span>        waitTime).build();<a name="line.886"></a>
-<span class="sourceLineNo">887</span>    } catch (ForeignException e) {<a name="line.887"></a>
-<span class="sourceLineNo">888</span>      throw new ServiceException(e.getCause());<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    } catch (IOException e) {<a name="line.889"></a>
-<span class="sourceLineNo">890</span>      throw new ServiceException(e);<a name="line.890"></a>
-<span class="sourceLineNo">891</span>    }<a name="line.891"></a>
-<span class="sourceLineNo">892</span>  }<a name="line.892"></a>
-<span class="sourceLineNo">893</span><a name="line.893"></a>
-<span class="sourceLineNo">894</span>  /**<a name="line.894"></a>
-<span class="sourceLineNo">895</span>   * Triggers a synchronous attempt to run a distributed procedure and sets<a name="line.895"></a>
-<span class="sourceLineNo">896</span>   * return data in response.<a name="line.896"></a>
-<span class="sourceLineNo">897</span>   * {@inheritDoc}<a name="line.897"></a>
-<span class="sourceLineNo">898</span>   */<a name="line.898"></a>
-<span class="sourceLineNo">899</span>  @Override<a name="line.899"></a>
-<span class="sourceLineNo">900</span>  public ExecProcedureResponse execProcedureWithRet(RpcController controller,<a name="line.900"></a>
-<span class="sourceLineNo">901</span>      ExecProcedureRequest request) throws ServiceException {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>    rpcPreCheck("execProcedureWithRet");<a name="line.902"></a>
-<span class="sourceLineNo">903</span>    try {<a name="line.903"></a>
-<span class="sourceLineNo">904</span>      ProcedureDescription desc = request.getProcedure();<a name="line.904"></a>
-<span class="sourceLineNo">905</span>      MasterProcedureManager mpm =<a name="line.905"></a>
-<span class="sourceLineNo">906</span>        master.getMasterProcedureManagerHost().getProcedureManager(desc.getSignature());<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      if (mpm == null) {<a name="line.907"></a>
-<span class="sourceLineNo">908</span>        throw new ServiceException("The procedure is not registered: " + desc.getSignature());<a name="line.908"></a>
-<span class="sourceLineNo">909</span>      }<a name="line.909"></a>
-<span class="sourceLineNo">910</span>      LOG.info(master.getClientIdAuditPrefix() + " procedure request for: " + desc.getSignature());<a name="line.910"></a>
-<span class="sourceLineNo">911</span>      byte[] data = mpm.execProcedureWithRet(desc);<a name="line.911"></a>
-<span class="sourceLineNo">912</span>      ExecProcedureResponse.Builder builder = ExecProcedureResponse.newBuilder();<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      // set return data if available<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      if (data != null) {<a name="line.914"></a>
-<span class="sourceLineNo">915</span>        builder.setReturnData(UnsafeByteOperations.unsafeWrap(data));<a name="line.915"></a>
-<span class="sourceLineNo">916</span>      }<a name="line.916"></a>
-<span class="sourceLineNo">917</span>      return builder.build();<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    } catch (IOException e) {<a name="line.918"></a>
-<span class="sourceLineNo">919</span>      throw new ServiceException(e);<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    }<a name="line.920"></a>
-<span class="sourceLineNo">921</span>  }<a name="line.921"></a>
-<span class="sourceLineNo">922</span><a name="line.922"></a>
-<span class="sourceLineNo">923</span>  @Override<a name="line.923"></a>
-<span class="sourceLineNo">924</span>  public GetClusterStatusResponse getClusterStatus(RpcController controller,<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      GetClusterStatusRequest req) throws ServiceException {<a name="line.925"></a>
-<span class="sourceLineNo">926</span>    GetClusterStatusResponse.Builder response = GetClusterStatusResponse.newBuilder();<a name="line.926"></a>
-<span class="sourceLineNo">927</span>    try {<a name="line.927"></a>
-<span class="sourceLineNo">928</span>      master.checkInitialized();<a name="line.928"></a>
-<span class="sourceLineNo">929</span>      response.setClusterStatus(ClusterMetricsBuilder.toClusterStatus(<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        master.getClusterMetrics(ClusterMetricsBuilder.toOptions(req.getOptionsList()))));<a name="line.930"></a>
-<span class="sourceLineNo">931</span>    } catch (IOException e) {<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      throw new ServiceException(e);<a name="line.932"></a>
-<span class="sourceLineNo">933</span>    }<a name="line.933"></a>
-<span class="sourceLineNo">934</span>    return response.build();<a name="line.934"></a>
-<span class="sourceLineNo">935</span>  }<a name="line.935"></a>
-<span class="sourceLineNo">936</span><a name="line.936"></a>
-<span class="sourceLineNo">937</span>  /**<a name="line.937"></a>
-<span class="sourceLineNo">938</span>   * List the currently available/stored snapshots. Any in-progress snapshots are ignored<a name="line.938"></a>
-<span class="sourceLineNo">939</span>   */<a name="line.939"></a>
-<span class="sourceLineNo">940</span>  @Override<a name="line.940"></a>
-<span class="sourceLineNo">941</span>  public GetCompletedSnapshotsResponse getCompletedSnapshots(RpcController controller,<a name="line.941"></a>
-<span class="sourceLineNo">942</span>      GetCompletedSnapshotsRequest request) throws ServiceException {<a name="line.942"></a>
-<span class="sourceLineNo">943</span>    try {<a name="line.943"></a>
-<span class="sourceLineNo">944</span>      master.checkInitialized();<a name="line.944"></a>
-<span class="sourceLineNo">945</span>      GetCompletedSnapshotsResponse.Builder builder = GetCompletedSnapshotsResponse.newBuilder();<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      List&lt;SnapshotDescription&gt; snapshots = master.snapshotManager.getCompletedSnapshots();<a name="line.946"></a>
-<span class="sourceLineNo">947</span><a name="line.947"></a>
-<span class="sourceLineNo">948</span>      // convert to protobuf<a name="line.948"></a>
-<span class="sourceLineNo">949</span>      for (SnapshotDescription snapshot : snapshots) {<a name="line.949"></a>
-<span class="sourceLineNo">950</span>        builder.addSnapshots(snapshot);<a name="line.950"></a>
-<span class="sourceLineNo">951</span>      }<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      return builder.build();<a name="line.952"></a>
-<span class="sourceLineNo">953</span>    } catch (IOException e) {<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      throw new ServiceException(e);<a name="line.954"></a>
-<span class="sourceLineNo">955</span>    }<a name="line.955"></a>
-<span class="sourceLineNo">956</span>  }<a name="line.956"></a>
-<span class="sourceLineNo">957</span><a name="line.957"></a>
-<span class="sourceLineNo">958</span>  @Override<a name="line.958"></a>
-<span class="sourceLineNo">959</span>  public GetNamespaceDescriptorResponse getNamespaceDescriptor(<a name="line.959"></a>
-<span class="sourceLineNo">960</span>      RpcController controller, GetNamespaceDescriptorRequest request)<a name="line.960"></a>
-<span class="sourceLineNo">961</span>      throws ServiceException {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    try {<a name="line.962"></a>
-<span class="sourceLineNo">963</span>      return GetNamespaceDescriptorResponse.newBuilder()<a name="line.963"></a>
-<span class="sourceLineNo">964</span>        .setNamespaceDescriptor(ProtobufUtil.toProtoNamespaceDescriptor(<a name="line.964"></a>
-<span class="sourceLineNo">965</span>            master.getNamespace(request.getNamespaceName())))<a name="line.965"></a>
-<span class="sourceLineNo">966</span>        .build();<a name="line.966"></a>
-<span class="sourceLineNo">967</span>    } catch (IOException e) {<a name="line.967"></a>
-<span class="sourceLineNo">968</span>      throw new ServiceException(e);<a name="line.968"></a>
-<span class="sourceLineNo">969</span>    }<a name="line.969"></a>
-<span class="sourceLineNo">970</span>  }<a name="line.970"></a>
-<span class="sourceLineNo">971</span><a name="line.971"></a>
-<span class="sourceLineNo">972</span>  /**<a name="line.972"></a>
-<span class="sourceLineNo">973</span>   * Get the number of regions of the table that have been updated by the alter.<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   *<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * @return Pair indicating the number of regions updated Pair.getFirst is the<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   *         regions that are yet to be updated Pair.getSecond is the total number<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   *         of regions of the table<a name="line.977"></a>
-<span class="sourceLineNo">978</span>   * @throws ServiceException<a name="line.978"></a>
-<span class="sourceLineNo">979</span>   */<a name="line.979"></a>
-<span class="sourceLineNo">980</span>  @Override<a name="line.980"></a>
-<span class="sourceLineNo">981</span>  public GetSchemaAlterStatusResponse getSchemaAlterStatus(<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      RpcController controller, GetSchemaAlterStatusRequest req) throws ServiceException {<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    // TODO: currently, we query using the table name on the client side. this<a name="line.983"></a>
-<span class="sourceLineNo">984</span>    // may overlap with other table operations or the table operation may<a name="line.984"></a>
-<span class="sourceLineNo">985</span>    // have completed before querying this API. We need to refactor to a<a name="line.985"></a>
-<span class="sourceLineNo">986</span>    // transaction system in the future to avoid these ambiguities.<a name="line.986"></a>
-<span class="sourceLineNo">987</span>    TableName tableName = ProtobufUtil.toTableName(req.getTableName());<a name="line.987"></a>
-<span class="sourceLineNo">988</span><a name="line.988"></a>
-<span class="sourceLineNo">989</span>    try {<a name="line.989"></a>
-<span class="sourceLineNo">990</span>      master.checkInitialized();<a name="line.990"></a>
-<span class="sourceLineNo">991</span>      Pair&lt;Integer,Integer&gt; pair = master.getAssignmentManager().getReopenStatus(tableName);<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      GetSchemaAlterStatusResponse.Builder ret = GetSchemaAlterStatusResponse.newBuilder();<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      ret.setYetToUpdateRegions(pair.getFirst());<a name="line.993"></a>
-<span class="sourceLineNo">994</span>      ret.setTotalRegions(pair.getSecond());<a name="line.994"></a>
-<span class="sourceLineNo">995</span>      return ret.build();<a name="line.995"></a>
-<span class="sourceLineNo">996</span>    } catch (IOException ioe) {<a name="line.996"></a>
-<span class="sourceLineNo">997</span>      throw new ServiceException(ioe);<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    }<a name="line.998"></a>
-<span class="sourceLineNo">999</span>  }<a name="line.999"></a>
-<span class="sourceLineNo">1000</span><a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  /**<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>   * Get list of TableDescriptors for requested tables.<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>   * @param c Unused (set to null).<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * @param req GetTableDescriptorsRequest that contains:<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * - tableNames: requested tables, or if empty, all are requested<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @return GetTableDescriptorsResponse<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   * @throws ServiceException<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>   */<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>  @Override<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>  public GetTableDescriptorsResponse getTableDescriptors(RpcController c,<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>      GetTableDescriptorsRequest req) throws ServiceException {<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    try {<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      master.checkInitialized();<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span><a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>      final String regex = req.hasRegex() ? req.getRegex() : null;<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      final String namespace = req.hasNamespace() ? req.getNamespace() : null;<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>      List&lt;TableName&gt; tableNameList = null;<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>      if (req.getTableNamesCount() &gt; 0) {<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>        tableNameList = new ArrayList&lt;TableName&gt;(req.getTableNamesCount());<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>        for (HBaseProtos.TableName tableNamePB: req.getTableNamesList()) {<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>          tableNameList.add(ProtobufUtil.toTableName(tableNamePB));<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>        }<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>      }<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span><a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>      List&lt;TableDescriptor&gt; descriptors = master.listTableDescriptors(namespace, regex,<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          tableNameList, req.getIncludeSysTables());<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span><a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>      GetTableDescriptorsResponse.Builder builder = GetTableDescriptorsResponse.newBuilder();<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>      if (descriptors != null &amp;&amp; descriptors.size() &gt; 0) {<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>        // Add the table descriptors to the response<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>        for (TableDescriptor htd: descriptors) {<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>          builder.addTableSchema(ProtobufUtil.toTableSchema(htd));<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>        }<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>      }<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>      return builder.build();<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>    } catch (IOException ioe) {<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>      throw new ServiceException(ioe);<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>    }<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>  }<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span><a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>  /**<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>   * Get list of userspace table names<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>   * @param controller Unused (set to null).<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>   * @param req GetTableNamesRequest<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>   * @return GetTableNamesResponse<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>   * @throws ServiceException<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>   */<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>  @Override<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>  public GetTableNamesResponse getTableNames(RpcController controller,<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>      GetTableNamesRequest req) throws ServiceException {<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>    try {<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>      master.checkServiceStarted();<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span><a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>      final String regex = req.hasRegex() ? req.getRegex() : null;<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>      final String namespace = req.hasNamespace() ? req.getNamespace() : null;<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>      List&lt;TableName&gt; tableNames = master.listTableNames(namespace, regex,<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>          req.getIncludeSysTables());<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span><a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>      GetTableNamesResponse.Builder builder = GetTableNamesResponse.newBuilder();<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>      if (tableNames != null &amp;&amp; tableNames.size() &gt; 0) {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        // Add the table names to the response<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>        for (TableName table: tableNames) {<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>          builder.addTableNames(ProtobufUtil.toProtoTableName(table));<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>        }<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>      }<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>      return builder.build();<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>    } catch (IOException e) {<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>      throw new ServiceException(e);<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>    }<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>  }<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span><a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>  @Override<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>  public GetTableStateResponse getTableState(RpcController controller,<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>      GetTableStateRequest request) throws ServiceException {<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>    try {<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>      master.checkServiceStarted();<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      TableName tableName = ProtobufUtil.toTableName(request.getTableName());<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>      TableState ts = master.getTableStateManager().getTableState(tableName);<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>      GetTableStateResponse.Builder builder = GetTableStateResponse.newBuilder();<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>      builder.setTableState(ts.convert());<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>      return builder.build();<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>    } catch (IOException e) {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>      throw new ServiceException(e);<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>    }<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>  }<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span><a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>  @Override<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>  public IsCatalogJanitorEnabledResponse isCatalogJanitorEnabled(RpcController c,<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>      IsCatalogJanitorEnabledRequest req) throws ServiceException {<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>    return IsCatalogJanitorEnabledResponse.newBuilder().setValue(<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>      master.isCatalogJanitorEnabled()).build();<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>  }<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span><a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>  @Override<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>  public IsCleanerChoreEnabledResponse isCleanerChoreEnabled(RpcController c,<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>                                                             IsCleanerChoreEnabledRequest req)<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    throws ServiceException {<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    return IsCleanerChoreEnabledResponse.newBuilder().setValue(master.isCleanerChoreEnabled())<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>                                        .build();<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>  }<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span><a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>  @Override<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>  public IsMasterRunningResponse isMasterRunning(RpcController c,<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>      IsMasterRunningRequest req) throws ServiceException {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>    try {<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      master.checkServiceStarted();<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      return IsMasterRunningResponse.newBuilder().setIsMasterRunning(<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>        !master.isStopped()).build();<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>    } catch (IOException e) {<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>      throw new ServiceException(e);<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>    }<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>  }<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span><a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>  /**<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>   * Checks if the specified procedure is done.<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>   * @return true if the procedure is done, false if the procedure is in the process of completing<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>   * @throws ServiceException if invalid procedure or failed procedure with progress failure reason.<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>   */<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>  @Override<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  public IsProcedureDoneResponse isProcedureDone(RpcController controller,<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>      IsProcedureDoneRequest request) throws ServiceException {<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>    try {<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>      master.checkInitialized();<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>      ProcedureDescription desc = request.getProcedure();<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      MasterProcedureManager mpm = master.getMasterProcedureManagerHost().getProcedureManager(<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>        desc.getSignature());<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>      if (mpm == null) {<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>        throw new ServiceException("The procedure is not registered: "<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>          + desc.getSignature());<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>      }<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>      LOG.debug("Checking to see if procedure from request:"<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>        + desc.getSignature() + " is done");<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span><a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      IsProcedureDoneResponse.Builder builder =<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>        IsProcedureDoneResponse.newBuilder();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      boolean done = mpm.isProcedureDone(desc);<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      builder.setDone(done);<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      return builder.build();<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>    } catch (ForeignException e) {<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>      throw new ServiceException(e.getCause());<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>    } catch (IOException e) {<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>      throw new ServiceException(e);<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>    }<a name="line.1143"></a>
-<span class="sourceLineNo">1144</span>  }<a name="line.1144"></a>
-<span class="sourceLineNo">1145</span><a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>  /**<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>   * Checks if the specified snapshot is done.<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>   * @return true if the snapshot is in file system ready to use,<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span>   *   false if the snapshot is in the process of completing<a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>   * @throws ServiceException wrapping UnknownSnapshotException if invalid snapshot, or<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>   *  a wrapped HBaseSnapshotException with progress failure reason.<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>   */<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span>  @Override<a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>  public IsSnapshotDoneResponse isSnapshotDone(RpcController controller,<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>      IsSnapshotDoneRequest request) throws ServiceException {<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>    LOG.debug("Checking to see if snapshot from request:" +<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>      ClientSnapshotDescriptionUtils.toString(request.getSnapshot()) + " is done");<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>    try {<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>      master.checkInitialized();<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>      IsSnapshotDoneResponse.Builder builder = IsSnapshotDoneResponse.newBuilder();<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span>      boolean done = master.snapshotManager.isSnapshotDone(request.getSnapshot());<a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>      builder.setDone(done);<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>      return builder.build();<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>    } catch (ForeignException e) {<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>      throw new ServiceException(e.getCause());<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>    } catch (IOException e) {<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>      throw new ServiceException(e);<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>    }<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>  }<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span><a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>  @Override<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>  public GetProcedureResultResponse getProcedureResult(RpcController controller,<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>      GetProcedureResultRequest request) throws ServiceException {<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>    LOG.debug("Checking to see if procedure is done pid=" + request.getProcId());<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span>    try {<a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>      master.checkInitialized();<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>      GetProcedureResultResponse.Builder builder = GetProcedureResultResponse.newBuilder();<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>      long procId = request.getProcId();<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>      ProcedureExecutor&lt;?&gt; executor = master.getMasterProcedureExecutor();<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>      Procedure&lt;?&gt; result = executor.getResultOrProcedure(procId);<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>      if (result != null) {<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>        builder.setSubmittedTime(result.getSubmittedTime());<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>        builder.setLastUpdate(result.getLastUpdate());<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>        if (executor.isFinished(procId)) {<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>          builder.setState(GetProcedureResultResponse.State.FINISHED);<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>          if (result.isFailed()) {<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>            IOException exception = result.getException().unwrapRemoteIOException();<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span>            builder.setException(ForeignExceptionUtil.toProtoForeignException(exception));<a name="line.1188"></a>
-<span class="sourceLineNo">1189</span>          }<a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>          byte[] resultData = result.getResult();<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>          if (resultData != null) {<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>            builder.setResult(UnsafeByteOperations.unsafeWrap(resultData));<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>          }<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>          master.getMasterProcedureExecutor().removeResult(request.getProcId());<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>        } else {<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>          builder.setState(GetProcedureResultResponse.State.RUNNING);<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span>        }<a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>      } else {<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>        builder.setState(GetProcedureResultResponse.State.NOT_FOUND);<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>      }<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>      return builder.build();<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>    } catch (IOException e) {<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>      throw new ServiceException(e);<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>    }<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>  }<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span><a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>  @Override<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>  public AbortProcedureResponse abortProcedure(<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>      RpcController rpcController, AbortProcedureRequest request) throws ServiceException {<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>    try {<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>      AbortProcedureResponse.Builder response = AbortProcedureResponse.newBuilder();<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>      boolean abortResult =<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>          master.abortProcedure(request.getProcId(), request.getMayInterruptIfRunning());<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>      response.setIsProcedureAborted(abortResult);<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>      return response.build();<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>    } catch (IOException e) {<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>      throw new ServiceException(e);<a name="line.1217"></a>
-<span class="sourceLineNo">1218</span>    }<a name="line.1218"></a>
-<span class="sourceLineNo">1219</span>  }<a name="line.1219"></a>
-<span class="sourceLineNo">1220</span><a name="line.1220"></a>
-<span class="sourceLineNo">1221</span>  @Override<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>  public ListNamespaceDescriptorsResponse listNamespaceDescriptors(RpcController c,<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>      ListNamespaceDescriptorsRequest request) throws ServiceException {<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>    try {<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>      ListNamespaceDescriptorsResponse.Builder response =<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>        ListNamespaceDescriptorsResponse.newBuilder();<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span>      for(NamespaceDescriptor ns: master.getNamespaces()) {<a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>        response.addNamespaceDescriptor(ProtobufUtil.toProtoNamespaceDescriptor(ns));<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>      }<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>      return response.build();<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>    } catch (IOException e) {<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>      throw new ServiceException(e);<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>    }<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>  }<a name="line.1234"></a>
-<span class="sourceLineNo">1235</span><a name="line.1235"></a>
-<span class="sourceLineNo">1236</span>  @Override<a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>  public GetProceduresResponse getProcedures(<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>      RpcController rpcController,<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>      GetProceduresRequest request) throws ServiceException {<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span>    try {<a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>      final GetProceduresResponse.Builder response = GetProceduresResponse.newBuilder();<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>      for (Procedure&lt;?&gt; p: master.getProcedures()) {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>        response.addProcedure(ProcedureUtil.convertToProtoProcedure(p));<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>      }<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>      return response.build();<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>    } catch (IOException e) {<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>      throw new ServiceException(e);<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span>    }<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span>  }<a name="line.1249"></a>
-<span class="sourceLineNo">1250</span><a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>  @Override<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>  public GetLocksResponse getLocks(<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>      RpcController controller,<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      GetLocksRequest request) throws ServiceException {<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>    try {<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>      final GetLocksResponse.Builder builder = GetLocksResponse.newBuilder();<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span><a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>      for (LockedResource lockedResource: master.getLocks()) {<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>        builder.addLock(ProcedureUtil.convertToProtoLockedResource(lockedResource));<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>      }<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span><a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>      return builder.build();<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>    } catch (IOException e) {<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span>      throw new ServiceException(e);<a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>    }<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>  }<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span><a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>  @Override<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>  public ListTableDescriptorsByNamespaceResponse listTableDescriptorsByNamespace(RpcController c,<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>      ListTableDescriptorsByNamespaceRequest request) throws ServiceException {<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>    try {<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span>      ListTableDescriptorsByNamespaceResponse.Builder b =<a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>          ListTableDescriptorsByNamespaceResponse.newBuilder();<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>      for (TableDescriptor htd : master<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>          .listTableDescriptorsByNamespace(request.getNamespaceName())) {<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>        b.addTableSchema(ProtobufUtil.toTableSchema(htd));<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span>      }<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>      return b.build();<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>    } catch (IOException e) {<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>      throw new ServiceException(e);<a name="line.1280"></a>
-<span class="sourceLineNo">1281</span>    }<a name="line.1281"></a>
-<span class="sourceLineNo">1282</span>  }<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span><a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>  @Override<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>  public ListTableNamesByNamespaceResponse listTableNamesByNamespace(RpcController c,<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>      ListTableNamesByNamespaceRequest request) throws ServiceException {<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span>    try {<a name="line.1287"></a>
-<span class="sourceLineNo">1288</span>      ListTableNamesByNamespaceResponse.Builder b =<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>        ListTableNamesByNamespaceResponse.newBuilder();<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>      for (TableName tableName: master.listTableNamesByNamespace(request.getNamespaceName())) {<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>        b.addTableName(ProtobufUtil.toProtoTableName(tableName));<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span>      }<a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>      return b.build();<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>    } catch (IOException e) {<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>      throw new ServiceException(e);<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span>    }<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span>  }<a name="line.1297"></a>
-<span class="sourceLineNo">1298</span><a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>  @Override<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>  public ModifyColumnResponse modifyColumn(RpcController controller,<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>      ModifyColumnRequest req) throws ServiceException {<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span>    try {<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>      long procId = master.modifyColumn(<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>        ProtobufUtil.toTableName(req.getTableName()),<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>        ProtobufUtil.toColumnFamilyDescriptor(req.getColumnFamilies()),<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>        req.getNonceGroup(),<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span>        req.getNonce());<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>      if (procId == -1) {<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>        // This mean operation was not performed in server, so do not set any procId<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>        return ModifyColumnResponse.newBuilder().build();<a name="line.1310"></a>
-<span class="sourceLineNo">1311</span>      } else {<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span>        return ModifyColumnResponse.newBuilder().setProcId(procId).build();<a name="line.1312"></a>
-<span class="sourceLineNo">1313</span>      }<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>    } catch (IOException ioe) {<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>      throw new ServiceException(ioe);<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span>    }<a name="line.1316"></a>
-<span class="sourceLineNo">1317</span>  }<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span><a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>  @Override<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>  public ModifyNamespaceResponse modifyNamespace(RpcController controller,<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>      ModifyNamespaceRequest request) throws ServiceException {<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span>    try {<a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>      long procId = master.modifyNamespace(<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>        ProtobufUtil.toNamespaceDescriptor(request.getNamespaceDescriptor()),<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>        request.getNonceGroup(),<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>        request.getNonce());<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span>      return ModifyNamespaceResponse.newBuilder().setProcId(procId).build();<a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>    } catch (IOException e) {<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>      throw new ServiceException(e);<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>    }<a name="line.1330"></a>
-<span class="sourceLineNo">1331</span>  }<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span><a name="line.1332"></a>
-<span class="sourceLineNo">1333</span>  @Override<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span>  public ModifyTableResponse modifyTable(RpcController controller,<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>      ModifyTableRequest req) throws ServiceException {<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span>    try {<a name="line.1336"></a>
-<span class="sourceLineNo">1337</span>      long procId = master.modifyTable(<a name="line.1337"></a>
-<span class="sourceLineNo">1338</span>        ProtobufUtil.toTableName(req.getTableName()),<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>        ProtobufUtil.toTableDescriptor(req.getTableSchema()),<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>        req.getNonceGroup(),<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>        req.getNonce());<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>      return ModifyTableResponse.newBuilder().setProcId(procId).build();<a name="line.1342"></a>
-<span class="sourceLineNo">1343</span>    } catch (IOException ioe) {<a name="line.1343"></a>
-<span class="sourceLineNo">1344</span>      throw new ServiceException(ioe);<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span>    }<a name="line.1345"></a>
-<span class="sourceLineNo">1346</span>  }<a name="line.1346"></a>
-<span class="sourceLineNo">1347</span><a name="line.1347"></a>
-<span class="sourceLineNo">1348</span>  @Override<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span>  public MoveRegionResponse moveRegion(RpcController controller,<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span>      MoveRegionRequest req) throws ServiceException {<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span>    final byte [] encodedRegionName = req.getRegion().getValue().toByteArray();<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span>    RegionSpecifierType type = req.getRegion().getType();<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span>    final byte [] destServerName = (req.hasDestServerName())?<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span>      Bytes.toBytes(ProtobufUtil.toServerName(req.getDestServerName()).getServerName()):null;<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span>    MoveRegionResponse mrr = MoveRegionResponse.newBuilder().build();<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span><a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>    if (type != RegionSpecifierType.ENCODED_REGION_NAME) {<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span>      LOG.warn("moveRegion specifier type: expected: " + RegionSpecifierType.ENCODED_REGION_NAME<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>        + " actual: " + type);<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span>    }<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span><a name="line.1361"></a>
-<span 

<TRUNCATED>

[27/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
index d2da8f4..27235ad 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
@@ -63,3784 +63,3870 @@
 <span class="sourceLineNo">055</span>import javax.servlet.http.HttpServlet;<a name="line.55"></a>
 <span class="sourceLineNo">056</span>import javax.servlet.http.HttpServletRequest;<a name="line.56"></a>
 <span class="sourceLineNo">057</span>import javax.servlet.http.HttpServletResponse;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.commons.lang3.StringUtils;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.conf.Configuration;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.Path;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.ChoreService;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HConstants;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.ServerName;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableName;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.Result;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.MoveRegionProcedure;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.RegionStateNode;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.assignment.UnassignProcedure;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.master.replication.SyncReplicationReplayWALManager;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.master.replication.TransitPeerSyncReplicationStateProcedure;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.quotas.MasterQuotasObserver;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.replication.SyncReplicationState;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.util.HBaseFsck;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.zookeeper.KeeperException;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.eclipse.jetty.server.Server;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>import org.slf4j.Logger;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>import org.slf4j.LoggerFactory;<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.224"></a>
-<span class="sourceLineNo">225</span><a name="line.225"></a>
-<span class="sourceLineNo">226</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.228"></a>
-<span class="sourceLineNo">229</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.230"></a>
-<span class="sourceLineNo">231</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.234"></a>
-<span class="sourceLineNo">235</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.235"></a>
-<span class="sourceLineNo">236</span> * run the cluster.  All others park themselves in their constructor until<a name="line.236"></a>
-<span class="sourceLineNo">237</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.237"></a>
-<span class="sourceLineNo">238</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.238"></a>
-<span class="sourceLineNo">239</span> *<a name="line.239"></a>
-<span class="sourceLineNo">240</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.240"></a>
-<span class="sourceLineNo">241</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.241"></a>
-<span class="sourceLineNo">242</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.242"></a>
-<span class="sourceLineNo">243</span> *<a name="line.243"></a>
-<span class="sourceLineNo">244</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.244"></a>
-<span class="sourceLineNo">245</span> *<a name="line.245"></a>
-<span class="sourceLineNo">246</span> * @see org.apache.zookeeper.Watcher<a name="line.246"></a>
-<span class="sourceLineNo">247</span> */<a name="line.247"></a>
-<span class="sourceLineNo">248</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.248"></a>
-<span class="sourceLineNo">249</span>@SuppressWarnings("deprecation")<a name="line.249"></a>
-<span class="sourceLineNo">250</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<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>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  private static class InitializationMonitor extends HasThread {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.263"></a>
-<span class="sourceLineNo">264</span>     * true, do nothing otherwise.<a name="line.264"></a>
-<span class="sourceLineNo">265</span>     */<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    public static final boolean HALT_DEFAULT = false;<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    private final HMaster master;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    private final long timeout;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    private final boolean haltOnTimeout;<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    InitializationMonitor(HMaster master) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      super("MasterInitializationMonitor");<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      this.master = master;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      this.setDaemon(true);<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>    @Override<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    public void run() {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      try {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>          Thread.sleep(timeout);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          if (master.isInitialized()) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          } else {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.290"></a>
-<span class="sourceLineNo">291</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.291"></a>
-<span class="sourceLineNo">292</span>            if (haltOnTimeout) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.293"></a>
-<span class="sourceLineNo">294</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.294"></a>
-<span class="sourceLineNo">295</span>              System.exit(-1);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>            }<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      } catch (InterruptedException ie) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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><a name="line.304"></a>
-<span class="sourceLineNo">305</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  //instance into web context.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  public static final String MASTER = "master";<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  // Manager and zk listener for master election<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  private final ActiveMasterManager activeMasterManager;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  // Region server tracker<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  private RegionServerTracker regionServerTracker;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  // Draining region server tracker<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  private DrainingServerTracker drainingServerTracker;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  // Tracker for load balancer state<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>  // Tracker for split and merge state<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.323"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.commons.lang3.StringUtils;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.conf.Configuration;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.fs.Path;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ChoreService;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HConstants;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.ServerName;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableName;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.Result;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.MoveRegionProcedure;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.assignment.RegionStateNode;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.assignment.UnassignProcedure;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.master.replication.SyncReplicationReplayWALManager;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.master.replication.TransitPeerSyncReplicationStateProcedure;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.quotas.MasterQuotasObserver;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.replication.SyncReplicationState;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.util.HBaseFsck;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.util.RetryCounterFactory;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>import org.apache.zookeeper.KeeperException;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.eclipse.jetty.server.Server;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>import org.slf4j.Logger;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>import org.slf4j.LoggerFactory;<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.225"></a>
+<span class="sourceLineNo">226</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.233"></a>
+<span class="sourceLineNo">234</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>/**<a name="line.236"></a>
+<span class="sourceLineNo">237</span> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.237"></a>
+<span class="sourceLineNo">238</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.238"></a>
+<span class="sourceLineNo">239</span> * run the cluster.  All others park themselves in their constructor until<a name="line.239"></a>
+<span class="sourceLineNo">240</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.240"></a>
+<span class="sourceLineNo">241</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.241"></a>
+<span class="sourceLineNo">242</span> *<a name="line.242"></a>
+<span class="sourceLineNo">243</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.243"></a>
+<span class="sourceLineNo">244</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.244"></a>
+<span class="sourceLineNo">245</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.245"></a>
+<span class="sourceLineNo">246</span> *<a name="line.246"></a>
+<span class="sourceLineNo">247</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.247"></a>
+<span class="sourceLineNo">248</span> *<a name="line.248"></a>
+<span class="sourceLineNo">249</span> * @see org.apache.zookeeper.Watcher<a name="line.249"></a>
+<span class="sourceLineNo">250</span> */<a name="line.250"></a>
+<span class="sourceLineNo">251</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.251"></a>
+<span class="sourceLineNo">252</span>@SuppressWarnings("deprecation")<a name="line.252"></a>
+<span class="sourceLineNo">253</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<a name="line.254"></a>
+<span class="sourceLineNo">255</span><a name="line.255"></a>
+<span class="sourceLineNo">256</span>  /**<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   */<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  private static class InitializationMonitor extends HasThread {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     * true, do nothing otherwise.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     */<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    public static final boolean HALT_DEFAULT = false;<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span>    private final HMaster master;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    private final long timeout;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    private final boolean haltOnTimeout;<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    InitializationMonitor(HMaster master) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      super("MasterInitializationMonitor");<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      this.master = master;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      this.setDaemon(true);<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 void run() {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      try {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>          Thread.sleep(timeout);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>          if (master.isInitialized()) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          } else {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.293"></a>
+<span class="sourceLineNo">294</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            if (haltOnTimeout) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.296"></a>
+<span class="sourceLineNo">297</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.297"></a>
+<span class="sourceLineNo">298</span>              System.exit(-1);<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>        }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      } catch (InterruptedException ie) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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>  }<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  //instance into web context.<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  public static final String MASTER = "master";<a name="line.310"></a>
+<span class="sourceLineNo">311</span><a name="line.311"></a>
+<span class="sourceLineNo">312</span>  // Manager and zk listener for master election<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  private final ActiveMasterManager activeMasterManager;<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  // Region server tracker<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  private RegionServerTracker regionServerTracker;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  // Draining region server tracker<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private DrainingServerTracker drainingServerTracker;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  // Tracker for load balancer state<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.323"></a>
 <span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  // Tracker for region normalizer state<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.326"></a>
+<span class="sourceLineNo">325</span>  // Tracker for split and merge state<a name="line.325"></a>
+<span class="sourceLineNo">326</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.326"></a>
 <span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  //Tracker for master maintenance mode setting<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.329"></a>
+<span class="sourceLineNo">328</span>  // Tracker for region normalizer state<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.329"></a>
 <span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  private ClusterSchemaService clusterSchemaService;<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    "hbase.master.wait.on.service.seconds";<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>  // Metrics for the HMaster<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  final MetricsMaster metricsMaster;<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  // file system manager for the master FS operations<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  private MasterFileSystem fileSystemManager;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  private MasterWalManager walManager;<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>  // server manager to deal with region server info<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  private volatile ServerManager serverManager;<a name="line.344"></a>
+<span class="sourceLineNo">331</span>  //Tracker for master maintenance mode setting<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>  private ClusterSchemaService clusterSchemaService;<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    "hbase.master.wait.on.service.seconds";<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>  // Metrics for the HMaster<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  final MetricsMaster metricsMaster;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  // file system manager for the master FS operations<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  private MasterFileSystem fileSystemManager;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  private MasterWalManager walManager;<a name="line.344"></a>
 <span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  // manager of assignment nodes in zookeeper<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private AssignmentManager assignmentManager;<a name="line.347"></a>
+<span class="sourceLineNo">346</span>  // server manager to deal with region server info<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  private volatile ServerManager serverManager;<a name="line.347"></a>
 <span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  // manager of replication<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.350"></a>
+<span class="sourceLineNo">349</span>  // manager of assignment nodes in zookeeper<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  private AssignmentManager assignmentManager;<a name="line.350"></a>
 <span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  private SyncReplicationReplayWALManager syncReplicationReplayWALManager;<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span>  // buffer for "fatal error" notices from region servers<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  // in the cluster. This is only used for assisting<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  // operations/debugging.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>  // flag set after we become the active master (used for testing)<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  private volatile boolean activeMaster = false;<a name="line.360"></a>
+<span class="sourceLineNo">352</span>  // manager of replication<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  private SyncReplicationReplayWALManager syncReplicationReplayWALManager;<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>  // buffer for "fatal error" notices from region servers<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  // in the cluster. This is only used for assisting<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  // operations/debugging.<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.360"></a>
 <span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // flag set after we complete initialization once active<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.363"></a>
+<span class="sourceLineNo">362</span>  // flag set after we become the active master (used for testing)<a name="line.362"></a>
+<span class="sourceLineNo">363</span>  private volatile boolean activeMaster = false;<a name="line.363"></a>
 <span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>  // flag set after master services are started,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  // initialization may have not completed yet.<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  volatile boolean serviceStarted = false;<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  // Maximum time we should run balancer for<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  private final int maxBlancingTime;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  // Maximum percent of regions in transition when balancing<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  private final double maxRitPercent;<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  private final LockManager lockManager = new LockManager(this);<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>  private LoadBalancer balancer;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  private RegionNormalizer normalizer;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  private BalancerChore balancerChore;<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  private RegionNormalizerChore normalizerChore;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  private ClusterStatusChore clusterStatusChore;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span>  CatalogJanitor catalogJanitorChore;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  private LogCleaner logCleaner;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  private HFileCleaner hfileCleaner;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  private MobCompactionChore mobCompactChore;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  // used to synchronize the mobCompactionStates<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  // save the information of mob compactions in tables.<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  MasterCoprocessorHost cpHost;<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  private final boolean preLoadTableDescriptors;<a name="line.398"></a>
-<span class="sourceLineNo">399</span><a name="line.399"></a>
-<span class="sourceLineNo">400</span>  // Time stamps for when a hmaster became active<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  private long masterActiveTime;<a name="line.401"></a>
+<span class="sourceLineNo">365</span>  // flag set after we complete initialization once active<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>  // flag set after master services are started,<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  // initialization may have not completed yet.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  volatile boolean serviceStarted = false;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  // Maximum time we should run balancer for<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  private final int maxBlancingTime;<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  // Maximum percent of regions in transition when balancing<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  private final double maxRitPercent;<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private final LockManager lockManager = new LockManager(this);<a name="line.377"></a>
+<span class="sourceLineNo">378</span><a name="line.378"></a>
+<span class="sourceLineNo">379</span>  private LoadBalancer balancer;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  private RegionNormalizer normalizer;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  private BalancerChore balancerChore;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  private RegionNormalizerChore normalizerChore;<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  private ClusterStatusChore clusterStatusChore;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  CatalogJanitor catalogJanitorChore;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>  private LogCleaner logCleaner;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>  private HFileCleaner hfileCleaner;<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  private MobCompactionChore mobCompactChore;<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  // used to synchronize the mobCompactionStates<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  // save the information of mob compactions in tables.<a name="line.395"></a>
+<span class="sourceLineNo">396</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.397"></a>
+<span class="sourceLineNo">398</span><a name="line.398"></a>
+<span class="sourceLineNo">399</span>  MasterCoprocessorHost cpHost;<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>  private final boolean preLoadTableDescriptors;<a name="line.401"></a>
 <span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  private long masterFinishedInitializationTime;<a name="line.404"></a>
+<span class="sourceLineNo">403</span>  // Time stamps for when a hmaster became active<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  private long masterActiveTime;<a name="line.404"></a>
 <span class="sourceLineNo">405</span><a name="line.405"></a>
-<span class="sourceLineNo">406</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private final boolean masterCheckCompression;<a name="line.407"></a>
+<span class="sourceLineNo">406</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  private long masterFinishedInitializationTime;<a name="line.407"></a>
 <span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  //should we check encryption settings at master side, default true<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private final boolean masterCheckEncryption;<a name="line.410"></a>
+<span class="sourceLineNo">409</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  private final boolean masterCheckCompression;<a name="line.410"></a>
 <span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  // monitor for snapshot of hbase tables<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  SnapshotManager snapshotManager;<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  // monitor for distributed procedures<a name="line.416"></a>
-<span class="sourceLineNo">417</span>  private MasterProcedureManagerHost mpmHost;<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  private volatile MasterQuotaManager quotaManager;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  private QuotaObserverChore quotaObserverChore;<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.423"></a>
-<span class="sourceLineNo">424</span><a name="line.424"></a>
-<span class="sourceLineNo">425</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  private WALProcedureStore procedureStore;<a name="line.426"></a>
+<span class="sourceLineNo">412</span>  //should we check encryption settings at master side, default true<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  private final boolean masterCheckEncryption;<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>  // monitor for snapshot of hbase tables<a name="line.417"></a>
+<span class="sourceLineNo">418</span>  SnapshotManager snapshotManager;<a name="line.418"></a>
+<span class="sourceLineNo">419</span>  // monitor for distributed procedures<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  private MasterProcedureManagerHost mpmHost;<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.422"></a>
+<span class="sourceLineNo">423</span>  private volatile MasterQuotaManager quotaManager;<a name="line.423"></a>
+<span class="sourceLineNo">424</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  private QuotaObserverChore quotaObserverChore;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.426"></a>
 <span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>  // handle table states<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  private TableStateManager tableStateManager;<a name="line.429"></a>
+<span class="sourceLineNo">428</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  private WALProcedureStore procedureStore;<a name="line.429"></a>
 <span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>  private long splitPlanCount;<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  private long mergePlanCount;<a name="line.432"></a>
+<span class="sourceLineNo">431</span>  // handle table states<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  private TableStateManager tableStateManager;<a name="line.432"></a>
 <span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span>  /* Handle favored nodes information */<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  private FavoredNodesManager favoredNodesManager;<a name="line.435"></a>
+<span class="sourceLineNo">434</span>  private long splitPlanCount;<a name="line.434"></a>
+<span class="sourceLineNo">435</span>  private long mergePlanCount;<a name="line.435"></a>
 <span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  private Server masterJettyServer;<a name="line.438"></a>
+<span class="sourceLineNo">437</span>  /* Handle favored nodes information */<a name="line.437"></a>
+<span class="sourceLineNo">438</span>  private FavoredNodesManager favoredNodesManager;<a name="line.438"></a>
 <span class="sourceLineNo">439</span><a name="line.439"></a>
-<span class="sourceLineNo">440</span>  public static class RedirectServlet extends HttpServlet {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    private final int regionServerInfoPort;<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    private final String regionServerHostname;<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>    /**<a name="line.445"></a>
-<span class="sourceLineNo">446</span>     * @param infoServer that we're trying to send all requests to<a name="line.446"></a>
-<span class="sourceLineNo">447</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.447"></a>
-<span class="sourceLineNo">448</span>     */<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>       regionServerInfoPort = infoServer.getPort();<a name="line.450"></a>
-<span class="sourceLineNo">451</span>       regionServerHostname = hostname;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    @Override<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    public void doGet(HttpServletRequest request,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      String redirectHost = regionServerHostname;<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      if(redirectHost == null) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        redirectHost = request.getServerName();<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.461"></a>
-<span class="sourceLineNo">462</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.462"></a>
-<span class="sourceLineNo">463</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.463"></a>
-<span class="sourceLineNo">464</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.464"></a>
-<span class="sourceLineNo">465</span>              "to an appropriate hostname.");<a name="line.465"></a>
-<span class="sourceLineNo">466</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.466"></a>
-<span class="sourceLineNo">467</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.467"></a>
-<span class="sourceLineNo">468</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.468"></a>
-<span class="sourceLineNo">469</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          return;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      String redirectUrl = request.getScheme() + "://"<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.476"></a>
-<span class="sourceLineNo">477</span>        + request.getRequestURI();<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      response.sendRedirect(redirectUrl);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    }<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>  /**<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * Init

<TRUNCATED>

[32/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html
index 4f72101..a1e50c1 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.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":9,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":9,"i35":10,"i36":9,"i37":9,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":41,"i95":41,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i109"
 :10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":10,"i136":10,"i137":10,"i138":10,"i139":10,"i140":10,"i141":10,"i142":10,"i143":10,"i144":10,"i145":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":9,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":9,"i36":10,"i37":9,"i38":9,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":41,"i96":41,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i109"
 :10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":10,"i136":10,"i137":10,"i138":10,"i139":10,"i140":10,"i141":10,"i142":10,"i143":10,"i144":10,"i145":10,"i146":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -499,12 +499,16 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 </td>
 </tr>
 <tr id="i14" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#closeAndArchiveCompactedFiles-boolean-">closeAndArchiveCompactedFiles</a></span>(boolean&nbsp;storeClosing)</code>&nbsp;</td>
+</tr>
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#commitFile-org.apache.hadoop.fs.Path-long-org.apache.hadoop.hbase.monitoring.MonitoredTask-">commitFile</a></span>(org.apache.hadoop.fs.Path&nbsp;path,
           long&nbsp;logCacheFlushId,
           <a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <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="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#compact-org.apache.hadoop.hbase.regionserver.compactions.CompactionContext-org.apache.hadoop.hbase.regionserver.throttle.ThroughputController-org.apache.hadoop.hbase.security.User-">compact</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;compaction,
        <a href="../../../../../org/apache/hadoop/hbase/regionserver/throttle/ThroughputController.html" title="interface in org.apache.hadoop.hbase.regionserver.throttle">ThroughputController</a>&nbsp;throughputController,
@@ -512,44 +516,44 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <div class="block">Compact the StoreFiles.</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/regionserver/HStore.html#compactRecentForTestingAssumingDefaultPolicy-int-">compactRecentForTestingAssumingDefaultPolicy</a></span>(int&nbsp;N)</code>
 <div class="block">This method tries to compact N recent files for testing.</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#completeCompaction-java.util.Collection-">completeCompaction</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;compactedFiles)</code>
 <div class="block">It works by processing a compaction that's been written to disk.</div>
 </td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createCacheConf-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">createCacheConf</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family)</code>
 <div class="block">Creates the cache config.</div>
 </td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createFileContext-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-boolean-boolean-org.apache.hadoop.hbase.io.crypto.Encryption.Context-">createFileContext</a></span>(<a href="../../../../../org/apache/hadoop/hbase/io/compress/Compression.Algorithm.html" title="enum in org.apache.hadoop.hbase.io.compress">Compression.Algorithm</a>&nbsp;compression,
                  boolean&nbsp;includeMVCCReadpoint,
                  boolean&nbsp;includesTag,
                  <a href="../../../../../org/apache/hadoop/hbase/io/crypto/Encryption.Context.html" title="class in org.apache.hadoop.hbase.io.crypto">Encryption.Context</a>&nbsp;cryptoContext)</code>&nbsp;</td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFlushContext</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createFlushContext-long-org.apache.hadoop.hbase.regionserver.FlushLifeCycleTracker-">createFlushContext</a></span>(long&nbsp;cacheFlushId,
                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushLifeCycleTracker.html" title="interface in org.apache.hadoop.hbase.regionserver">FlushLifeCycleTracker</a>&nbsp;tracker)</code>&nbsp;</td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createScanner-org.apache.hadoop.hbase.client.Scan-org.apache.hadoop.hbase.regionserver.ScanInfo-java.util.NavigableSet-long-">createScanner</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
              <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo,
              <a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;byte[]&gt;&nbsp;targetCols,
              long&nbsp;readPt)</code>&nbsp;</td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">StoreEngine</a>&lt;?,?,?,?&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createStoreEngine-org.apache.hadoop.hbase.regionserver.HStore-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.CellComparator-">createStoreEngine</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
                  org.apache.hadoop.conf.Configuration&nbsp;conf,
@@ -557,15 +561,15 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <div class="block">Creates the store engine configured for the given Store.</div>
 </td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i24" class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createStoreFileAndReader-org.apache.hadoop.fs.Path-">createStoreFileAndReader</a></span>(org.apache.hadoop.fs.Path&nbsp;p)</code>&nbsp;</td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i25" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createStoreFileAndReader-org.apache.hadoop.hbase.regionserver.StoreFileInfo-">createStoreFileAndReader</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&nbsp;info)</code>&nbsp;</td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i26" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createWriterInTmp-long-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-boolean-boolean-boolean-boolean-">createWriterInTmp</a></span>(long&nbsp;maxKeyCount,
                  <a href="../../../../../org/apache/hadoop/hbase/io/compress/Compression.Algorithm.html" title="enum in org.apache.hadoop.hbase.io.compress">Compression.Algorithm</a>&nbsp;compression,
@@ -574,21 +578,21 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
                  boolean&nbsp;includesTag,
                  boolean&nbsp;shouldDropBehind)</code>&nbsp;</td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#deleteChangedReaderObserver-org.apache.hadoop.hbase.regionserver.ChangedReadersObserver-">deleteChangedReaderObserver</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChangedReadersObserver.html" title="interface in org.apache.hadoop.hbase.regionserver">ChangedReadersObserver</a>&nbsp;o)</code>&nbsp;</td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i28" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#deregisterChildren-org.apache.hadoop.hbase.conf.ConfigurationManager-">deregisterChildren</a></span>(<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html" title="class in org.apache.hadoop.hbase.conf">ConfigurationManager</a>&nbsp;manager)</code>
 <div class="block">Needs to be called to deregister the children from the manager.</div>
 </td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i29" class="rowColor">
 <td class="colFirst"><code>static long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#determineTTLFromFamily-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">determineTTLFromFamily</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family)</code>&nbsp;</td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i30" class="altColor">
 <td class="colFirst"><code>protected <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/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#doCompaction-org.apache.hadoop.hbase.regionserver.compactions.CompactionRequestImpl-java.util.Collection-org.apache.hadoop.hbase.security.User-long-java.util.List-">doCompaction</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionRequestImpl.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequestImpl</a>&nbsp;cr,
             <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;filesToCompact,
@@ -596,11 +600,11 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
             long&nbsp;compactionStartTime,
             <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;org.apache.hadoop.fs.Path&gt;&nbsp;newFiles)</code>&nbsp;</td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i31" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#finishCompactionRequest-org.apache.hadoop.hbase.regionserver.compactions.CompactionRequestImpl-">finishCompactionRequest</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionRequestImpl.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequestImpl</a>&nbsp;cr)</code>&nbsp;</td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i32" class="altColor">
 <td class="colFirst"><code>protected <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;org.apache.hadoop.fs.Path&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#flushCache-long-org.apache.hadoop.hbase.regionserver.MemStoreSnapshot-org.apache.hadoop.hbase.monitoring.MonitoredTask-org.apache.hadoop.hbase.regionserver.throttle.ThroughputController-org.apache.hadoop.hbase.regionserver.FlushLifeCycleTracker-">flushCache</a></span>(long&nbsp;logCacheFlushId,
           <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a>&nbsp;snapshot,
@@ -610,191 +614,191 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <div class="block">Write out current snapshot.</div>
 </td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i33" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalDouble.html?is-external=true" title="class or interface in java.util">OptionalDouble</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getAvgStoreFileAge--">getAvgStoreFileAge</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getBlockingFileCount--">getBlockingFileCount</a></span>()</code>
 <div class="block">The number of files required before flushes for this store will be blocked.</div>
 </td>
 </tr>
-<tr id="i34" class="altColor">
+<tr id="i35" class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getBytesPerChecksum-org.apache.hadoop.conf.Configuration-">getBytesPerChecksum</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
 <div class="block">Returns the configured bytesPerChecksum value.</div>
 </td>
 </tr>
-<tr id="i35" class="rowColor">
+<tr id="i36" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCacheConfig--">getCacheConfig</a></span>()</code>
 <div class="block">Used for tests.</div>
 </td>
 </tr>
-<tr id="i36" class="altColor">
+<tr id="i37" class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util">ChecksumType</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getChecksumType-org.apache.hadoop.conf.Configuration-">getChecksumType</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
 <div class="block">Returns the configured checksum algorithm.</div>
 </td>
 </tr>
-<tr id="i37" class="rowColor">
+<tr id="i38" class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCloseCheckInterval--">getCloseCheckInterval</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i38" class="altColor">
+<tr id="i39" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getColumnFamilyDescriptor--">getColumnFamilyDescriptor</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i39" class="rowColor">
+<tr id="i40" class="altColor">
 <td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getColumnFamilyName--">getColumnFamilyName</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i40" class="altColor">
+<tr id="i41" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedCellsCount--">getCompactedCellsCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i41" class="rowColor">
+<tr id="i42" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedCellsSize--">getCompactedCellsSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i42" class="altColor">
+<tr id="i43" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedFiles--">getCompactedFiles</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i43" class="rowColor">
+<tr id="i44" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedFilesCount--">getCompactedFilesCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i44" class="altColor">
+<tr id="i45" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactionCheckMultiplier--">getCompactionCheckMultiplier</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i45" class="rowColor">
+<tr id="i46" class="altColor">
 <td class="colFirst"><code>double</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactionPressure--">getCompactionPressure</a></span>()</code>
 <div class="block">This value can represent the degree of emergency of compaction for this store.</div>
 </td>
 </tr>
-<tr id="i46" class="altColor">
+<tr id="i47" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionProgress.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionProgress</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactionProgress--">getCompactionProgress</a></span>()</code>
 <div class="block">getter for CompactionProgress object</div>
 </td>
 </tr>
-<tr id="i47" class="rowColor">
+<tr id="i48" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactPriority--">getCompactPriority</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i48" class="altColor">
+<tr id="i49" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getComparator--">getComparator</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i49" class="rowColor">
+<tr id="i50" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.regionserver">RegionCoprocessorHost</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCoprocessorHost--">getCoprocessorHost</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i50" class="altColor">
+<tr id="i51" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCurrentParallelPutCount--">getCurrentParallelPutCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i51" class="rowColor">
+<tr id="i52" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getDataBlockEncoder--">getDataBlockEncoder</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i52" class="altColor">
+<tr id="i53" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.FileSystem</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFileSystem--">getFileSystem</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i53" class="rowColor">
+<tr id="i54" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushableSize--">getFlushableSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i54" class="altColor">
+<tr id="i55" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushedCellsCount--">getFlushedCellsCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i55" class="rowColor">
+<tr id="i56" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushedCellsSize--">getFlushedCellsSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i56" class="altColor">
+<tr id="i57" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushedOutputFileSize--">getFlushedOutputFileSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i57" class="rowColor">
+<tr id="i58" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getHFilesSize--">getHFilesSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i58" class="altColor">
+<tr id="i59" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getHRegion--">getHRegion</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i59" class="rowColor">
+<tr id="i60" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getLastCompactSize--">getLastCompactSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i60" class="altColor">
+<tr id="i61" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMajorCompactedCellsCount--">getMajorCompactedCellsCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i61" class="rowColor">
+<tr id="i62" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMajorCompactedCellsSize--">getMajorCompactedCellsSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i62" class="altColor">
+<tr id="i63" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMaxMemStoreTS--">getMaxMemStoreTS</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i63" class="rowColor">
+<tr id="i64" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMaxSequenceId--">getMaxSequenceId</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i64" class="altColor">
+<tr id="i65" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMaxStoreFileAge--">getMaxStoreFileAge</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i65" class="rowColor">
+<tr id="i66" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStore</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMemstore--">getMemstore</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i66" class="altColor">
+<tr id="i67" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMemStoreFlushSize--">getMemStoreFlushSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i67" class="rowColor">
+<tr id="i68" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMemStoreSize--">getMemStoreSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i68" class="altColor">
+<tr id="i69" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMinStoreFileAge--">getMinStoreFileAge</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i69" class="rowColor">
+<tr id="i70" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getNumHFiles--">getNumHFiles</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i70" class="altColor">
+<tr id="i71" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getNumReferenceFiles--">getNumReferenceFiles</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i71" class="rowColor">
+<tr id="i72" class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/OffPeakHours.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">OffPeakHours</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getOffPeakHours--">getOffPeakHours</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i72" class="altColor">
+<tr id="i73" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getRegionFileSystem--">getRegionFileSystem</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i73" class="rowColor">
+<tr id="i74" class="altColor">
 <td class="colFirst"><code><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/regionserver/HStore.html#getRegionInfo--">getRegionInfo</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i74" class="altColor">
+<tr id="i75" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanInfo--">getScanInfo</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i75" class="rowColor">
+<tr id="i76" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanner-org.apache.hadoop.hbase.client.Scan-java.util.NavigableSet-long-">getScanner</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
           <a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;byte[]&gt;&nbsp;targetCols,
@@ -802,7 +806,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <div class="block">Return a scanner for both the memstore and the HStore files.</div>
 </td>
 </tr>
-<tr id="i76" class="altColor">
+<tr id="i77" class="rowColor">
 <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="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanners-boolean-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-byte:A-long-">getScanners</a></span>(boolean&nbsp;cacheBlocks,
            boolean&nbsp;isGet,
@@ -815,7 +819,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <div class="block">Get all scanners with no filtering based on TTL (that happens further down the line).</div>
 </td>
 </tr>
-<tr id="i77" class="rowColor">
+<tr id="i78" class="altColor">
 <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="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanners-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-">getScanners</a></span>(boolean&nbsp;cacheBlocks,
            boolean&nbsp;usePread,
@@ -829,7 +833,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <div class="block">Get all scanners with no filtering based on TTL (that happens further down the line).</div>
 </td>
 </tr>
-<tr id="i78" class="altColor">
+<tr id="i79" class="rowColor">
 <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="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanners-java.util.List-boolean-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-byte:A-long-boolean-">getScanners</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="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;files,
            boolean&nbsp;cacheBlocks,
@@ -845,7 +849,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
  (that happens further down the line).</div>
 </td>
 </tr>
-<tr id="i79" class="rowColor">
+<tr id="i80" class="altColor">
 <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="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">getScanners</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="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;files,
            boolean&nbsp;cacheBlocks,
@@ -862,69 +866,69 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
  (that happens further down the line).</div>
 </td>
 </tr>
-<tr id="i80" class="altColor">
+<tr id="i81" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSize--">getSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i81" class="rowColor">
+<tr id="i82" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSmallestReadPoint--">getSmallestReadPoint</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i82" class="altColor">
+<tr id="i83" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSnapshotSize--">getSnapshotSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i83" class="rowColor">
+<tr id="i84" class="altColor">
 <td class="colFirst"><code><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;byte[]&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSplitPoint--">getSplitPoint</a></span>()</code>
 <div class="block">Determines if Store should be split.</div>
 </td>
 </tr>
-<tr id="i84" class="altColor">
+<tr id="i85" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">StoreEngine</a>&lt;?,?,?,?&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreEngine--">getStoreEngine</a></span>()</code>
 <div class="block">Returns the StoreEngine that is backing this concrete implementation of Store.</div>
 </td>
 </tr>
-<tr id="i85" class="rowColor">
+<tr id="i86" class="altColor">
 <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/stream/LongStream.html?is-external=true" title="class or interface in java.util.stream">LongStream</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreFileAgeStream--">getStoreFileAgeStream</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i86" class="altColor">
+<tr id="i87" class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreFileFieldSize-java.util.function.ToLongFunction-">getStoreFileFieldSize</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/ToLongFunction.html?is-external=true" title="class or interface in java.util.function">ToLongFunction</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&gt;&nbsp;f)</code>&nbsp;</td>
 </tr>
-<tr id="i87" class="rowColor">
+<tr id="i88" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefiles--">getStorefiles</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i88" class="altColor">
+<tr id="i89" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefilesCount--">getStorefilesCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i89" class="rowColor">
+<tr id="i90" class="altColor">
 <td class="colFirst"><code>(package private) long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreFileSize-org.apache.hadoop.hbase.regionserver.HStoreFile-">getStoreFileSize</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;file)</code>
 <div class="block">Computes the length of a store file without succumbing to any errors along the way.</div>
 </td>
 </tr>
-<tr id="i90" class="altColor">
+<tr id="i91" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefilesRootLevelIndexSize--">getStorefilesRootLevelIndexSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i91" class="rowColor">
+<tr id="i92" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefilesSize--">getStorefilesSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i92" class="altColor">
+<tr id="i93" class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefilesSize-java.util.function.Predicate-">getStorefilesSize</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Predicate.html?is-external=true" title="class or interface in java.util.function">Predicate</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;predicate)</code>&nbsp;</td>
 </tr>
-<tr id="i93" class="rowColor">
+<tr id="i94" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreFileTtl--">getStoreFileTtl</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i94" class="altColor">
+<tr id="i95" class="rowColor">
 <td class="colFirst"><code>static org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreHomedir-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.client.RegionInfo-byte:A-">getStoreHomedir</a></span>(org.apache.hadoop.fs.Path&nbsp;tabledir,
                <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri,
@@ -932,7 +936,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </td>
 </tr>
-<tr id="i95" class="rowColor">
+<tr id="i96" class="altColor">
 <td class="colFirst"><code>static org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreHomedir-org.apache.hadoop.fs.Path-java.lang.String-byte:A-">getStoreHomedir</a></span>(org.apache.hadoop.fs.Path&nbsp;tabledir,
                <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;encodedName,
@@ -940,25 +944,25 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </td>
 </tr>
-<tr id="i96" class="altColor">
+<tr id="i97" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreSizeUncompressed--">getStoreSizeUncompressed</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i97" class="rowColor">
+<tr id="i98" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getTableName--">getTableName</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i98" class="altColor">
+<tr id="i99" class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getTotalSize-java.util.Collection-">getTotalSize</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;sfs)</code>&nbsp;</td>
 </tr>
-<tr id="i99" class="rowColor">
+<tr id="i100" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getTotalStaticBloomSize--">getTotalStaticBloomSize</a></span>()</code>
 <div class="block">Returns the total byte size of all Bloom filter bit arrays.</div>
 </td>
 </tr>
-<tr id="i100" class="altColor">
+<tr id="i101" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getTotalStaticIndexSize--">getTotalStaticIndexSize</a></span>()</code>
 <div class="block">Returns the total size of all index blocks in the data block indexes, including the root level,
@@ -966,34 +970,34 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
  single-level indexes.</div>
 </td>
 </tr>
-<tr id="i101" class="rowColor">
+<tr id="i102" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#hasReferences--">hasReferences</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i102" class="altColor">
+<tr id="i103" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#hasTooManyStoreFiles--">hasTooManyStoreFiles</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i103" class="rowColor">
+<tr id="i104" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#heapSize--">heapSize</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i104" class="altColor">
+<tr id="i105" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#isPrimaryReplicaStore--">isPrimaryReplicaStore</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i105" class="rowColor">
+<tr id="i106" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#isSloppyMemStore--">isSloppyMemStore</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i106" class="altColor">
+<tr id="i107" class="rowColor">
 <td class="colFirst"><code>private <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/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#loadStoreFiles--">loadStoreFiles</a></span>()</code>
 <div class="block">Creates an unsorted list of StoreFile loaded in parallel
  from the given directory.</div>
 </td>
 </tr>
-<tr id="i107" class="rowColor">
+<tr id="i108" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#logCompactionEndMessage-org.apache.hadoop.hbase.regionserver.compactions.CompactionRequestImpl-java.util.List-long-long-">logCompactionEndMessage</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionRequestImpl.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequestImpl</a>&nbsp;cr,
                        <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/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;sfs,
@@ -1002,63 +1006,63 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <div class="block">Log a very elaborate compaction completion message.</div>
 </td>
 </tr>
-<tr id="i108" class="altColor">
+<tr id="i109" class="rowColor">
 <td class="colFirst"><code>private <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/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#moveCompactedFilesIntoPlace-org.apache.hadoop.hbase.regionserver.compactions.CompactionRequestImpl-java.util.List-org.apache.hadoop.hbase.security.User-">moveCompactedFilesIntoPlace</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionRequestImpl.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequestImpl</a>&nbsp;cr,
                            <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;org.apache.hadoop.fs.Path&gt;&nbsp;newFiles,
                            <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
 </tr>
-<tr id="i109" class="rowColor">
+<tr id="i110" class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#moveFileIntoPlace-org.apache.hadoop.fs.Path-">moveFileIntoPlace</a></span>(org.apache.hadoop.fs.Path&nbsp;newFile)</code>&nbsp;</td>
 </tr>
-<tr id="i110" class="altColor">
+<tr id="i111" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#needsCompaction--">needsCompaction</a></span>()</code>
 <div class="block">See if there's too much store files in this store</div>
 </td>
 </tr>
-<tr id="i111" class="rowColor">
+<tr id="i112" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#notifyChangedReadersObservers-java.util.List-">notifyChangedReadersObservers</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="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;sfs)</code>
 <div class="block">Notify all observers that set of Readers has changed.</div>
 </td>
 </tr>
-<tr id="i112" class="altColor">
+<tr id="i113" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#onConfigurationChange-org.apache.hadoop.conf.Configuration-">onConfigurationChange</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
 <div class="block">This method would be called by the <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html" title="class in org.apache.hadoop.hbase.conf"><code>ConfigurationManager</code></a>
  object when the <code>Configuration</code> object is reloaded from disk.</div>
 </td>
 </tr>
-<tr id="i113" class="rowColor">
+<tr id="i114" class="altColor">
 <td class="colFirst"><code>private <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/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#openStoreFiles-java.util.Collection-">openStoreFiles</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&gt;&nbsp;files)</code>&nbsp;</td>
 </tr>
-<tr id="i114" class="altColor">
+<tr id="i115" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#postSnapshotOperation--">postSnapshotOperation</a></span>()</code>
 <div class="block">Perform tasks needed after the completion of snapshot operation.</div>
 </td>
 </tr>
-<tr id="i115" class="rowColor">
+<tr id="i116" class="altColor">
 <td class="colFirst"><code><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;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#preBulkLoadHFile-java.lang.String-long-">preBulkLoadHFile</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;srcPathStr,
                 long&nbsp;seqNum)</code>
 <div class="block">This method should only be called from Region.</div>
 </td>
 </tr>
-<tr id="i116" class="altColor">
+<tr id="i117" class="rowColor">
 <td class="colFirst"><code><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></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#preFlushSeqIDEstimation--">preFlushSeqIDEstimation</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i117" class="rowColor">
+<tr id="i118" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#preSnapshotOperation--">preSnapshotOperation</a></span>()</code>
 <div class="block">Sets the store up for a region level snapshot operation.</div>
 </td>
 </tr>
-<tr id="i118" class="altColor">
+<tr id="i119" class="rowColor">
 <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="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#recreateScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">recreateScanners</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="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;currentFileScanners,
                 boolean&nbsp;cacheBlocks,
@@ -1074,20 +1078,20 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <div class="block">Recreates the scanners on the current list of active store file scanners</div>
 </td>
 </tr>
-<tr id="i119" class="rowColor">
+<tr id="i120" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#refreshStoreFiles--">refreshStoreFiles</a></span>()</code>
 <div class="block">Checks the underlying store files, and opens the files that have not been opened, and removes
  the store file readers for store files no longer available.</div>
 </td>
 </tr>
-<tr id="i120" class="altColor">
+<tr id="i121" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#refreshStoreFiles-java.util.Collection-">refreshStoreFiles</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</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;newFiles)</code>
 <div class="block">Replaces the store files that the store has with the given files.</div>
 </td>
 </tr>
-<tr id="i121" class="rowColor">
+<tr id="i122" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#refreshStoreFilesInternal-java.util.Collection-">refreshStoreFilesInternal</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&gt;&nbsp;newFiles)</code>
 <div class="block">Checks the underlying store files, and opens the files that  have not
@@ -1095,28 +1099,29 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
  available.</div>
 </td>
 </tr>
-<tr id="i122" class="altColor">
+<tr id="i123" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#registerChildren-org.apache.hadoop.hbase.conf.ConfigurationManager-">registerChildren</a></span>(<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html" title="class in org.apache.hadoop.hbase.conf">ConfigurationManager</a>&nbsp;manager)</code>
 <div class="block">Needs to be called to register the children to the manager.</div>
 </td>
 </tr>
-<tr id="i123" class="rowColor">
+<tr id="i124" class="altColor">
 <td class="colFirst"><code>private void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#removeCompactedfiles-java.util.Collection-">removeCompactedfiles</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;compactedfiles)</code>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#removeCompactedfiles-java.util.Collection-boolean-">removeCompactedfiles</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;compactedfiles,
+                    boolean&nbsp;storeClosing)</code>
 <div class="block">Archives and removes the compacted files</div>
 </td>
 </tr>
-<tr id="i124" class="altColor">
+<tr id="i125" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#removeUnneededFiles--">removeUnneededFiles</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i125" class="rowColor">
+<tr id="i126" class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#replaceStoreFiles-java.util.Collection-java.util.Collection-">replaceStoreFiles</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;compactedFiles,
                  <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;result)</code>&nbsp;</td>
 </tr>
-<tr id="i126" class="altColor">
+<tr id="i127" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#replayCompactionMarker-org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor-boolean-boolean-">replayCompactionMarker</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor&nbsp;compaction,
                       boolean&nbsp;pickCompactionFiles,
@@ -1124,78 +1129,78 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <div class="block">Call to complete a compaction.</div>
 </td>
 </tr>
-<tr id="i127" class="rowColor">
+<tr id="i128" class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#reportArchivedFilesForQuota-java.util.List-java.util.List-">reportArchivedFilesForQuota</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;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;archivedFiles,
                            <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/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;fileSizes)</code>&nbsp;</td>
 </tr>
-<tr id="i128" class="altColor">
+<tr id="i129" class="rowColor">
 <td class="colFirst"><code><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/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#requestCompaction--">requestCompaction</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i129" class="rowColor">
+<tr id="i130" class="altColor">
 <td class="colFirst"><code><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/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#requestCompaction-int-org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker-org.apache.hadoop.hbase.security.User-">requestCompaction</a></span>(int&nbsp;priority,
                  <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionLifeCycleTracker.html" title="interface in org.apache.hadoop.hbase.regionserver.compactions">CompactionLifeCycleTracker</a>&nbsp;tracker,
                  <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
 </tr>
-<tr id="i130" class="altColor">
+<tr id="i131" class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#setDataBlockEncoderInTest-org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder-">setDataBlockEncoderInTest</a></span>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a>&nbsp;blockEncoder)</code>
 <div class="block">Should be used only in tests.</div>
 </td>
 </tr>
-<tr id="i131" class="rowColor">
+<tr id="i132" class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#setScanInfo-org.apache.hadoop.hbase.regionserver.ScanInfo-">setScanInfo</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo)</code>
 <div class="block">Set scan info, used by test</div>
 </td>
 </tr>
-<tr id="i132" class="altColor">
+<tr id="i133" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#shouldPerformMajorCompaction--">shouldPerformMajorCompaction</a></span>()</code>
 <div class="block">Tests whether we should run a major compaction.</div>
 </td>
 </tr>
-<tr id="i133" class="rowColor">
+<tr id="i134" class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#snapshot--">snapshot</a></span>()</code>
 <div class="block">Snapshot this stores memstore.</div>
 </td>
 </tr>
-<tr id="i134" class="altColor">
+<tr id="i135" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#startReplayingFromWAL--">startReplayingFromWAL</a></span>()</code>
 <div class="block">This message intends to inform the MemStore that next coming updates
  are going to be part of the replaying edits from WAL</div>
 </td>
 </tr>
-<tr id="i135" class="rowColor">
+<tr id="i136" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#stopReplayingFromWAL--">stopReplayingFromWAL</a></span>()</code>
 <div class="block">This message intends to inform the MemStore that the replaying edits from WAL
  are done</div>
 </td>
 </tr>
-<tr id="i136" class="altColor">
+<tr id="i137" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#throttleCompaction-long-">throttleCompaction</a></span>(long&nbsp;compactionSize)</code>&nbsp;</td>
 </tr>
-<tr id="i137" class="rowColor">
+<tr id="i138" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#timeOfOldestEdit--">timeOfOldestEdit</a></span>()</code>
 <div class="block">When was the last edit done in the memstore</div>
 </td>
 </tr>
-<tr id="i138" class="altColor">
+<tr id="i139" class="rowColor">
 <td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#toString--">toString</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i139" class="rowColor">
+<tr id="i140" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#triggerMajorCompaction--">triggerMajorCompaction</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i140" class="altColor">
+<tr id="i141" class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#updateSpaceQuotaAfterFileReplacement-org.apache.hadoop.hbase.quotas.RegionSizeStore-org.apache.hadoop.hbase.client.RegionInfo-java.util.Collection-java.util.Collection-">updateSpaceQuotaAfterFileReplacement</a></span>(<a href="../../../../../org/apache/hadoop/hbase/quotas/RegionSizeStore.html" title="interface in org.apache.hadoop.hbase.quotas">RegionSizeStore</a>&nbsp;sizeStore,
                                     <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
@@ -1205,14 +1210,14 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
  and adding in the size for new files.</div>
 </td>
 </tr>
-<tr id="i141" class="rowColor">
+<tr id="i142" class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#updateStorefiles-java.util.List-long-">updateStorefiles</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="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;sfs,
                 long&nbsp;snapshotId)</code>
 <div class="block">Change storeFiles adding into place the Reader produced by this new flush.</div>
 </td>
 </tr>
-<tr id="i142" class="altColor">
+<tr id="i143" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#upsert-java.lang.Iterable-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">upsert</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cells,
       long&nbsp;readpoint,
@@ -1220,17 +1225,17 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <div class="block">Adds or replaces the specified KeyValues.</div>
 </td>
 </tr>
-<tr id="i143" class="rowColor">
+<tr id="i144" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#validateStoreFile-org.apache.hadoop.fs.Path-">validateStoreFile</a></span>(org.apache.hadoop.fs.Path&nbsp;path)</code>
 <div class="block">Validates a store file by opening and closing it.</div>
 </td>
 </tr>
-<tr id="i144" class="altColor">
+<tr id="i145" class="rowColor">
 <td class="colFirst"><code>(package private) int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#versionsToReturn-int-">versionsToReturn</a></span>(int&nbsp;wantedVersions)</code>&nbsp;</td>
 </tr>
-<tr id="i145" class="rowColor">
+<tr id="i146" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#writeCompactionWalRecord-java.util.Collection-java.util.Collection-">writeCompactionWalRecord</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;filesCompacted,
                         <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;newFiles)</code>
@@ -4048,13 +4053,28 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 </dl>
 </li>
 </ul>
-<a name="removeCompactedfiles-java.util.Collection-">
+<a name="closeAndArchiveCompactedFiles-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>closeAndArchiveCompactedFiles</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2582">closeAndArchiveCompactedFiles</a>(boolean&nbsp;storeClosing)
+                                   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>
+<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>
+</dl>
+</li>
+</ul>
+<a name="removeCompactedfiles-java.util.Collection-boolean-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>removeCompactedfiles</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2607">removeCompactedfiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;compactedfiles)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2612">removeCompactedfiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;compactedfiles,
+                                  boolean&nbsp;storeClosing)
                            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">Archives and removes the compacted files</div>
 <dl>
@@ -4071,7 +4091,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreFileSize</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2693">getStoreFileSize</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;file)</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2724">getStoreFileSize</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;file)</pre>
 <div class="block">Computes the length of a store file without succumbing to any errors along the way. If an
  error is encountered, the implementation returns <code>0</code> instead of the actual size.</div>
 <dl>
@@ -4088,7 +4108,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>preFlushSeqIDEstimation</h4>
-<pre>public&nbsp;<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>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2711">preFlushSeqIDEstimation</a>()</pre>
+<pre>public&nbsp;<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>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2742">preFlushSeqIDEstimation</a>()</pre>
 </li>
 </ul>
 <a name="isSloppyMemStore--">
@@ -4097,7 +4117,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>isSloppyMemStore</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2716">isSloppyMemStore</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2747">isSloppyMemStore</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#isSloppyMemStore--">isSloppyMemStore</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -4112,7 +4132,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>clearCompactedfiles</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2720">clearCompactedfiles</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/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;filesToRemove)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2751">clearCompactedfiles</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/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;filesToRemove)
                           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>
@@ -4126,7 +4146,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>reportArchivedFilesForQuota</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2730">reportArchivedFilesForQuota</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;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;archivedFiles,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2761">reportArchivedFilesForQuota</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;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org

<TRUNCATED>

[04/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcScheduler.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcScheduler.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcScheduler.html
index 8c8cc19..ad0629d 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcScheduler.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcScheduler.html
@@ -54,838 +54,854 @@
 <span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.ipc.DelegatingRpcScheduler;<a name="line.46"></a>
 <span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.ipc.PriorityFunction;<a name="line.47"></a>
 <span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.ipc.RpcScheduler;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.regionserver.SimpleRpcSchedulerFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.testclassification.MiscTests;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.ManualEnvironmentEdge;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.junit.AfterClass;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.junit.Assert;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.junit.BeforeClass;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.junit.ClassRule;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.junit.Rule;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.junit.Test;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.junit.experimental.categories.Category;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.junit.rules.TestName;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.slf4j.Logger;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.slf4j.LoggerFactory;<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hbase.thirdparty.com.google.common.collect.Sets;<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 {@link org.apache.hadoop.hbase.MetaTableAccessor}.<a name="line.74"></a>
-<span class="sourceLineNo">075</span> */<a name="line.75"></a>
-<span class="sourceLineNo">076</span>@Category({MiscTests.class, MediumTests.class})<a name="line.76"></a>
-<span class="sourceLineNo">077</span>@SuppressWarnings("deprecation")<a name="line.77"></a>
-<span class="sourceLineNo">078</span>public class TestMetaTableAccessor {<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  @ClassRule<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      HBaseClassTestRule.forClass(TestMetaTableAccessor.class);<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>  private static final Logger LOG = LoggerFactory.getLogger(TestMetaTableAccessor.class);<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  private static final  HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  private static Connection connection;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  private Random random = new Random();<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  @Rule<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  public TestName name = new TestName();<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>  @BeforeClass public static void beforeClass() throws Exception {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    UTIL.startMiniCluster(3);<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>    Configuration c = new Configuration(UTIL.getConfiguration());<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    // Tests to 4 retries every 5 seconds. Make it try every 1 second so more<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    // responsive.  1 second is default as is ten retries.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    c.setLong("hbase.client.pause", 1000);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    c.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 10);<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    connection = ConnectionFactory.createConnection(c);<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>  @AfterClass public static void afterClass() throws Exception {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    connection.close();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    UTIL.shutdownMiniCluster();<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>   * Does {@link MetaTableAccessor#getRegion(Connection, byte[])} and a write<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   * against hbase:meta while its hosted server is restarted to prove our retrying<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * works.<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   */<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  @Test public void testRetrying()<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  throws IOException, InterruptedException {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    LOG.info("Started " + tableName);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    Table t = UTIL.createMultiRegionTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    int regionCount = -1;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    try (RegionLocator r = UTIL.getConnection().getRegionLocator(tableName)) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      regionCount = r.getStartKeys().length;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    // Test it works getting a region from just made user table.<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    final List&lt;RegionInfo&gt; regions =<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      testGettingTableRegions(connection, tableName, regionCount);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    MetaTask reader = new MetaTask(connection, "reader") {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      @Override<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      void metaTask() throws Throwable {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        testGetRegion(connection, regions.get(0));<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        LOG.info("Read " + regions.get(0).getEncodedName());<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    };<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    MetaTask writer = new MetaTask(connection, "writer") {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      @Override<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      void metaTask() throws Throwable {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        MetaTableAccessor.addRegionToMeta(connection, regions.get(0));<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        LOG.info("Wrote " + regions.get(0).getEncodedName());<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>    reader.start();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    writer.start();<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>    // We're gonna check how it takes. If it takes too long, we will consider<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    //  it as a fail. We can't put that in the @Test tag as we want to close<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    //  the threads nicely<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    final long timeOut = 180000;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    long startTime = System.currentTimeMillis();<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>    try {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      // Make sure reader and writer are working.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      assertTrue(reader.isProgressing());<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      assertTrue(writer.isProgressing());<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>      // Kill server hosting meta -- twice  . See if our reader/writer ride over the<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      // meta moves.  They'll need to retry.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      for (int i = 0; i &lt; 2; i++) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        LOG.info("Restart=" + i);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        UTIL.ensureSomeRegionServersAvailable(2);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        int index = -1;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        do {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          index = UTIL.getMiniHBaseCluster().getServerWithMeta();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        } while (index == -1 &amp;&amp;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>          startTime + timeOut &lt; System.currentTimeMillis());<a name="line.162"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.regionserver.SimpleRpcSchedulerFactory;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.testclassification.MiscTests;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.ManualEnvironmentEdge;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.junit.AfterClass;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.junit.Assert;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.junit.BeforeClass;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.junit.ClassRule;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.junit.Rule;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.junit.Test;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.junit.experimental.categories.Category;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.junit.rules.TestName;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.slf4j.Logger;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.slf4j.LoggerFactory;<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hbase.thirdparty.com.google.common.collect.Sets;<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>/**<a name="line.74"></a>
+<span class="sourceLineNo">075</span> * Test {@link org.apache.hadoop.hbase.MetaTableAccessor}.<a name="line.75"></a>
+<span class="sourceLineNo">076</span> */<a name="line.76"></a>
+<span class="sourceLineNo">077</span>@Category({MiscTests.class, MediumTests.class})<a name="line.77"></a>
+<span class="sourceLineNo">078</span>@SuppressWarnings("deprecation")<a name="line.78"></a>
+<span class="sourceLineNo">079</span>public class TestMetaTableAccessor {<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  @ClassRule<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      HBaseClassTestRule.forClass(TestMetaTableAccessor.class);<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  private static final Logger LOG = LoggerFactory.getLogger(TestMetaTableAccessor.class);<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private static final  HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  private static Connection connection;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private Random random = new Random();<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  @Rule<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public TestName name = new TestName();<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>  @BeforeClass public static void beforeClass() throws Exception {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    UTIL.startMiniCluster(3);<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>    Configuration c = new Configuration(UTIL.getConfiguration());<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    // Tests to 4 retries every 5 seconds. Make it try every 1 second so more<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    // responsive.  1 second is default as is ten retries.<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    c.setLong("hbase.client.pause", 1000);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    c.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 10);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    connection = ConnectionFactory.createConnection(c);<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>  @AfterClass public static void afterClass() throws Exception {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    connection.close();<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    UTIL.shutdownMiniCluster();<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>  @Test<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  public void testIsMetaWhenAllHealthy() throws InterruptedException {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    HMaster m = UTIL.getMiniHBaseCluster().getMaster();<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    assertTrue(m.waitUntilMetaOnline());<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  @Test<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public void testIsMetaWhenMetaGoesOffline() throws InterruptedException {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    HMaster m = UTIL.getMiniHBaseCluster().getMaster();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    int index = UTIL.getMiniHBaseCluster().getServerWithMeta();<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    HRegionServer rsWithMeta = UTIL.getMiniHBaseCluster().getRegionServer(index);<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    rsWithMeta.abort("TESTING");<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    assertTrue(m.waitUntilMetaOnline());<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>  /**<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   * Does {@link MetaTableAccessor#getRegion(Connection, byte[])} and a write<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   * against hbase:meta while its hosted server is restarted to prove our retrying<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   * works.<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   */<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  @Test public void testRetrying()<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  throws IOException, InterruptedException {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    LOG.info("Started " + tableName);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    Table t = UTIL.createMultiRegionTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    int regionCount = -1;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    try (RegionLocator r = UTIL.getConnection().getRegionLocator(tableName)) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      regionCount = r.getStartKeys().length;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    }<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    // Test it works getting a region from just made user table.<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    final List&lt;RegionInfo&gt; regions =<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      testGettingTableRegions(connection, tableName, regionCount);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    MetaTask reader = new MetaTask(connection, "reader") {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      @Override<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      void metaTask() throws Throwable {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        testGetRegion(connection, regions.get(0));<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        LOG.info("Read " + regions.get(0).getEncodedName());<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      }<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    };<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    MetaTask writer = new MetaTask(connection, "writer") {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      @Override<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      void metaTask() throws Throwable {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        MetaTableAccessor.addRegionToMeta(connection, regions.get(0));<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        LOG.info("Wrote " + regions.get(0).getEncodedName());<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      }<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    };<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    reader.start();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    writer.start();<a name="line.156"></a>
+<span class="sourceLineNo">157</span><a name="line.157"></a>
+<span class="sourceLineNo">158</span>    // We're gonna check how it takes. If it takes too long, we will consider<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    //  it as a fail. We can't put that in the @Test tag as we want to close<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    //  the threads nicely<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    final long timeOut = 180000;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    long startTime = System.currentTimeMillis();<a name="line.162"></a>
 <span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>        if (index != -1){<a name="line.164"></a>
-<span class="sourceLineNo">165</span>          UTIL.getMiniHBaseCluster().abortRegionServer(index);<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          UTIL.getMiniHBaseCluster().waitOnRegionServer(index);<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>      assertTrue("reader: " + reader.toString(), reader.isProgressing());<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      assertTrue("writer: " + writer.toString(), writer.isProgressing());<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    } catch (IOException e) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      throw e;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    } finally {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      reader.stop = true;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      writer.stop = true;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      reader.join();<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      writer.join();<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      t.close();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    long exeTime = System.currentTimeMillis() - startTime;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    assertTrue("Timeout: test took " + exeTime / 1000 + " sec", exeTime &lt; timeOut);<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>   * Thread that runs a MetaTableAccessor task until asked stop.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   */<a name="line.187"></a>
-<span class="sourceLineNo">188</span>  abstract static class MetaTask extends Thread {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    boolean stop = false;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    int count = 0;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    Throwable t = null;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    final Connection connection;<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>    MetaTask(final Connection connection, final String name) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      super(name);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      this.connection = connection;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    }<a name="line.197"></a>
-<span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>    @Override<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    public void run() {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      try {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>        while(!this.stop) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>          LOG.info("Before " + this.getName()+ ", count=" + this.count);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>          metaTask();<a name="line.204"></a>
-<span class="sourceLineNo">205</span>          this.count += 1;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>          LOG.info("After " + this.getName() + ", count=" + this.count);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>          Thread.sleep(100);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>        }<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      } catch (Throwable t) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        LOG.info(this.getName() + " failed", t);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        this.t = t;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      }<a name="line.212"></a>
+<span class="sourceLineNo">164</span>    try {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      // Make sure reader and writer are working.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      assertTrue(reader.isProgressing());<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      assertTrue(writer.isProgressing());<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>      // Kill server hosting meta -- twice  . See if our reader/writer ride over the<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      // meta moves.  They'll need to retry.<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      for (int i = 0; i &lt; 2; i++) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        LOG.info("Restart=" + i);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        UTIL.ensureSomeRegionServersAvailable(2);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>        int index = -1;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        do {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          index = UTIL.getMiniHBaseCluster().getServerWithMeta();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        } while (index == -1 &amp;&amp;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>          startTime + timeOut &lt; System.currentTimeMillis());<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>        if (index != -1){<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          UTIL.getMiniHBaseCluster().abortRegionServer(index);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>          UTIL.getMiniHBaseCluster().waitOnRegionServer(index);<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>      assertTrue("reader: " + reader.toString(), reader.isProgressing());<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      assertTrue("writer: " + writer.toString(), writer.isProgressing());<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    } catch (IOException e) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      throw e;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    } finally {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      reader.stop = true;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      writer.stop = true;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      reader.join();<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      writer.join();<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      t.close();<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    long exeTime = System.currentTimeMillis() - startTime;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    assertTrue("Timeout: test took " + exeTime / 1000 + " sec", exeTime &lt; timeOut);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  }<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>   * Thread that runs a MetaTableAccessor task until asked stop.<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   */<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  abstract static class MetaTask extends Thread {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    boolean stop = false;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    int count = 0;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    Throwable t = null;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    final Connection connection;<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span>    MetaTask(final Connection connection, final String name) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      super(name);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      this.connection = connection;<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>    boolean isProgressing() throws InterruptedException {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      int currentCount = this.count;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      while(currentCount == this.count) {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        if (!isAlive()) return false;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>        if (this.t != null) return false;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        Thread.sleep(10);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      }<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      return true;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>    @Override<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    public String toString() {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return "count=" + this.count + ", t=" +<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        (this.t == null? "null": this.t.toString());<a name="line.228"></a>
+<span class="sourceLineNo">215</span>    @Override<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    public void run() {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      try {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        while(!this.stop) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>          LOG.info("Before " + this.getName()+ ", count=" + this.count);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>          metaTask();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>          this.count += 1;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>          LOG.info("After " + this.getName() + ", count=" + this.count);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>          Thread.sleep(100);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>        }<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      } catch (Throwable t) {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>        LOG.info(this.getName() + " failed", t);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        this.t = t;<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>    abstract void metaTask() throws Throwable;<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>  @Test public void testGetRegionsFromMetaTable()<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  throws IOException, InterruptedException {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    List&lt;RegionInfo&gt; regions =<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      new MetaTableLocator().getMetaRegions(UTIL.getZooKeeperWatcher());<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    assertTrue(regions.size() &gt;= 1);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    assertTrue(new MetaTableLocator().getMetaRegionsAndLocations(<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      UTIL.getZooKeeperWatcher()).size() &gt;= 1);<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>  @Test public void testTableExists() throws IOException {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    assertTrue(MetaTableAccessor.tableExists(connection, tableName));<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    Admin admin = UTIL.getAdmin();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    admin.disableTable(tableName);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    admin.deleteTable(tableName);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    assertTrue(MetaTableAccessor.tableExists(connection,<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        TableName.META_TABLE_NAME));<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    assertTrue(MetaTableAccessor.tableExists(connection, tableName));<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    admin.disableTable(tableName);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    admin.deleteTable(tableName);<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<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>  @Test public void testGetRegion() throws IOException, InterruptedException {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    final String name = this.name.getMethodName();<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    LOG.info("Started " + name);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    // Test get on non-existent region.<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      MetaTableAccessor.getRegion(connection, Bytes.toBytes("nonexistent-region"));<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertNull(pair);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    LOG.info("Finished " + name);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  }<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>  // Test for the optimization made in HBASE-3650<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  @Test public void testScanMetaForTable()<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  throws IOException, InterruptedException {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    LOG.info("Started " + tableName);<a name="line.275"></a>
+<span class="sourceLineNo">231</span>    boolean isProgressing() throws InterruptedException {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      int currentCount = this.count;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      while(currentCount == this.count) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        if (!isAlive()) return false;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        if (this.t != null) return false;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        Thread.sleep(10);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      }<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      return true;<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>    @Override<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    public String toString() {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      return "count=" + this.count + ", t=" +<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        (this.t == null? "null": this.t.toString());<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    abstract void metaTask() throws Throwable;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  }<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>  @Test public void testGetRegionsFromMetaTable()<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  throws IOException, InterruptedException {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    List&lt;RegionInfo&gt; regions =<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      new MetaTableLocator().getMetaRegions(UTIL.getZooKeeperWatcher());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    assertTrue(regions.size() &gt;= 1);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    assertTrue(new MetaTableLocator().getMetaRegionsAndLocations(<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      UTIL.getZooKeeperWatcher()).size() &gt;= 1);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>  }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>  @Test public void testTableExists() throws IOException {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    assertTrue(MetaTableAccessor.tableExists(connection, tableName));<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    Admin admin = UTIL.getAdmin();<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    admin.disableTable(tableName);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    admin.deleteTable(tableName);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    assertTrue(MetaTableAccessor.tableExists(connection,<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        TableName.META_TABLE_NAME));<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    assertTrue(MetaTableAccessor.tableExists(connection, tableName));<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    admin.disableTable(tableName);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    admin.deleteTable(tableName);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  }<a name="line.275"></a>
 <span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    /** Create 2 tables<a name="line.277"></a>
-<span class="sourceLineNo">278</span>     - testScanMetaForTable<a name="line.278"></a>
-<span class="sourceLineNo">279</span>     - testScanMetaForTablf<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>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    // name that is +1 greater than the first one (e+1=f)<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    TableName greaterName =<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        TableName.valueOf("testScanMetaForTablf");<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    UTIL.createTable(greaterName, HConstants.CATALOG_FAMILY);<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>    // Now make sure we only get the regions from 1 of the tables at a time<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    assertEquals(1, MetaTableAccessor.getTableRegions(connection, tableName).size());<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    assertEquals(1, MetaTableAccessor.getTableRegions(connection, greaterName).size());<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>  private static List&lt;RegionInfo&gt; testGettingTableRegions(final Connection connection,<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      final TableName name, final int regionCount)<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  throws IOException, InterruptedException {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    List&lt;RegionInfo&gt; regions = MetaTableAccessor.getTableRegions(connection, name);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    assertEquals(regionCount, regions.size());<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      MetaTableAccessor.getRegion(connection, regions.get(0).getRegionName());<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    assertEquals(regions.get(0).getEncodedName(),<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      pair.getFirst().getEncodedName());<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    return regions;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  }<a name="line.304"></a>
+<span class="sourceLineNo">277</span>  @Test public void testGetRegion() throws IOException, InterruptedException {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    final String name = this.name.getMethodName();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    LOG.info("Started " + name);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    // Test get on non-existent region.<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      MetaTableAccessor.getRegion(connection, Bytes.toBytes("nonexistent-region"));<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    assertNull(pair);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    LOG.info("Finished " + name);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>  // Test for the optimization made in HBASE-3650<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  @Test public void testScanMetaForTable()<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  throws IOException, InterruptedException {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    LOG.info("Started " + tableName);<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>    /** Create 2 tables<a name="line.293"></a>
+<span class="sourceLineNo">294</span>     - testScanMetaForTable<a name="line.294"></a>
+<span class="sourceLineNo">295</span>     - testScanMetaForTablf<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    **/<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    // name that is +1 greater than the first one (e+1=f)<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    TableName greaterName =<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        TableName.valueOf("testScanMetaForTablf");<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    UTIL.createTable(greaterName, HConstants.CATALOG_FAMILY);<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>    // Now make sure we only get the regions from 1 of the tables at a time<a name="line.304"></a>
 <span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span>  private static void testGetRegion(final Connection connection,<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      final RegionInfo region)<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  throws IOException, InterruptedException {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      MetaTableAccessor.getRegion(connection, region.getRegionName());<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    assertEquals(region.getEncodedName(),<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      pair.getFirst().getEncodedName());<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>  @Test<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  public void testParseReplicaIdFromServerColumn() {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    String column1 = HConstants.SERVER_QUALIFIER_STR;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    assertEquals(0, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column1)));<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    String column2 = column1 + MetaTableAccessor.META_REPLICA_ID_DELIMITER;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column2)));<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    String column3 = column2 + "00";<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column3)));<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    String column4 = column3 + "2A";<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    assertEquals(42, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column4)));<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    String column5 = column4 + "2A";<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column5)));<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    String column6 = HConstants.STARTCODE_QUALIFIER_STR;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column6)));<a name="line.328"></a>
+<span class="sourceLineNo">306</span>    assertEquals(1, MetaTableAccessor.getTableRegions(connection, tableName).size());<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    assertEquals(1, MetaTableAccessor.getTableRegions(connection, greaterName).size());<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>  private static List&lt;RegionInfo&gt; testGettingTableRegions(final Connection connection,<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      final TableName name, final int regionCount)<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  throws IOException, InterruptedException {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    List&lt;RegionInfo&gt; regions = MetaTableAccessor.getTableRegions(connection, name);<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    assertEquals(regionCount, regions.size());<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      MetaTableAccessor.getRegion(connection, regions.get(0).getRegionName());<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    assertEquals(regions.get(0).getEncodedName(),<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      pair.getFirst().getEncodedName());<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    return regions;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  private static void testGetRegion(final Connection connection,<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      final RegionInfo region)<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  throws IOException, InterruptedException {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      MetaTableAccessor.getRegion(connection, region.getRegionName());<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    assertEquals(region.getEncodedName(),<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      pair.getFirst().getEncodedName());<a name="line.328"></a>
 <span class="sourceLineNo">329</span>  }<a name="line.329"></a>
 <span class="sourceLineNo">330</span><a name="line.330"></a>
 <span class="sourceLineNo">331</span>  @Test<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public void testMetaReaderGetColumnMethods() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    Assert.assertArrayEquals(HConstants.SERVER_QUALIFIER, MetaTableAccessor.getServerColumn(0));<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.SERVER_QUALIFIER_STR<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      MetaTableAccessor.getServerColumn(42));<a name="line.336"></a>
-<span class="sourceLineNo">337</span><a name="line.337"></a>
-<span class="sourceLineNo">338</span>    Assert.assertArrayEquals(HConstants.STARTCODE_QUALIFIER,<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      MetaTableAccessor.getStartCodeColumn(0));<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.STARTCODE_QUALIFIER_STR<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      MetaTableAccessor.getStartCodeColumn(42));<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>    Assert.assertArrayEquals(HConstants.SEQNUM_QUALIFIER,<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      MetaTableAccessor.getSeqNumColumn(0));<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.SEQNUM_QUALIFIER_STR<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      MetaTableAccessor.getSeqNumColumn(42));<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>  @Test<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  public void testMetaLocationsForRegionReplicas() throws IOException {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    ServerName serverName0 = ServerName.valueOf("foo", 60010, random.nextLong());<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    ServerName serverName1 = ServerName.valueOf("bar", 60010, random.nextLong());<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    ServerName serverName100 = ServerName.valueOf("baz", 60010, random.nextLong());<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>    long regionId = System.currentTimeMillis();<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    RegionInfo primary = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.359"></a>
-<span class="sourceLineNo">360</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        .setSplit(false)<a name="line.361"></a>
-<span class="sourceLineNo">362</span>        .setRegionId(regionId)<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        .setReplicaId(0)<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        .build();<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    RegionInfo replica1 = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.367"></a>
-<span class="sourceLineNo">368</span>        .setSplit(false)<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        .setRegionId(regionId)<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        .setReplicaId(1)<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        .build();<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    RegionInfo replica100 = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.372"></a>
-<span class="sourceLineNo">373</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.374"></a>
-<span class="sourceLineNo">375</span>        .setSplit(false)<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        .setRegionId(regionId)<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        .setReplicaId(100)<a name="line.377"></a>
-<span class="sourceLineNo">378</span>        .build();<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>    long seqNum0 = random.nextLong();<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    long seqNum1 = random.nextLong();<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    long seqNum100 = random.nextLong();<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>    try (Table meta = MetaTableAccessor.getMetaHTable(connection)) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      MetaTableAccessor.updateRegionLocation(connection, primary, serverName0, seqNum0,<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        EnvironmentEdgeManager.currentTime());<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>      // assert that the server, startcode and seqNum columns are there for the primary region<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>      // add replica = 1<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      MetaTableAccessor.updateRegionLocation(connection, replica1, serverName1, seqNum1,<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        EnvironmentEdgeManager.currentTime());<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      // check whether the primary is still there<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      // now check for replica 1<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      assertMetaLocation(meta, primary.getRegionName(), serverName1, seqNum1, 1, true);<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>      // add replica = 1<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      MetaTableAccessor.updateRegionLocation(connection, replica100, serverName100, seqNum100,<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        EnvironmentEdgeManager.currentTime());<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      // check whether the primary is still there<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      // check whether the replica 1 is still there<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      assertMetaLocation(meta, primary.getRegionName(), serverName1, seqNum1, 1, true);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      // now check for replica 1<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      assertMetaLocation(meta, primary.getRegionName(), serverName100, seqNum100, 100, true);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
-<span class="sourceLineNo">409</span>  }<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>  public static void assertMetaLocation(Table meta, byte[] row, ServerName serverName,<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      long seqNum, int replicaId, boolean checkSeqNum) throws IOException {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    Get get = new Get(row);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    Result result = meta.get(get);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    assertTrue(Bytes.equals(<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getServerColumn(replicaId)),<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      Bytes.toBytes(serverName.getHostAndPort())));<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    assertTrue(Bytes.equals(<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getStartCodeColumn(replicaId)),<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      Bytes.toBytes(serverName.getStartcode())));<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    if (checkSeqNum) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      assertTrue(Bytes.equals(<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getSeqNumColumn(replicaId)),<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        Bytes.toBytes(seqNum)));<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    }<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  }<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>  public static void assertEmptyMetaLocation(Table meta, byte[] row, int replicaId)<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      throws IOException {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    Get get = new Get(row);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    Result result = meta.get(get);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    Cell serverCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.432"></a>
-<span class="sourceLineNo">433</span>        MetaTableAccessor.getServerColumn(replicaId));<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    Cell startCodeCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      MetaTableAccessor.getStartCodeColumn(replicaId));<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    assertNotNull(serverCell);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    assertNotNull(startCodeCell);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    assertEquals(0, serverCell.getValueLength());<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    assertEquals(0, startCodeCell.getValueLength());<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>  @Test<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  public void testMetaLocationForRegionReplicasIsRemovedAtTableDeletion() throws IOException {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    long regionId = System.currentTimeMillis();<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    RegionInfo primary = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        .setStartKey(HConstants.EMPTY_START_ROW).setEndKey(HConstants.EMPTY_END_ROW).setSplit(false)<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        .setRegionId(regionId).setReplicaId(0).build();<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>    Table meta = MetaTableAccessor.getMetaHTable(connection);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    try {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      List&lt;RegionInfo&gt; regionInfos = Lists.newArrayList(primary);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      MetaTableAccessor.addRegionsToMeta(connection, regionInfos, 3);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      MetaTableAccessor.removeRegionReplicasFromMeta(Sets.newHashSet(primary.getRegionName()), 1, 2,<a name="line.453"></a>
-<span class="sourceLineNo">454</span>        connection);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      Get get = new Get(primary.getRegionName());<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      Result result = meta.get(get);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      for (int replicaId = 0; replicaId &lt; 3; replicaId++) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>        Cell serverCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>          MetaTableAccessor.getServerColumn(replicaId));<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        Cell startCodeCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.460"></a>
-<span class="sourceLineNo">461</span>          MetaTableAccessor.getStartCodeColumn(replicaId));<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        Cell stateCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.462"></a>
-<span class="sourceLineNo">463</span>          MetaTableAccessor.getRegionStateColumn(replicaId));<a name="line.463"></a>
-<span class="sourceLineNo">464</span>        Cell snCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.464"></a>
-<span class="sourceLineNo">465</span>          MetaTableAccessor.getServerNameColumn(replicaId));<a name="line.465"></a>
-<span class="sourceLineNo">466</span>        if (replicaId == 0) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>          assertNotNull(stateCell);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>        } else {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>          assertNull(serverCell);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          assertNull(startCodeCell);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>          assertNull(stateCell);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>          assertNull(snCell);<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>    } finally {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      meta.close();<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    }<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  }<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>  @Test<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  public void testMetaLocationForRegionReplicasIsAddedAtTableCreation() throws IOException {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    long regionId = System.currentTimeMillis();<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    RegionInfo primary = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.483"></a>
-<span class="sourceLineNo">484</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.484"></a>
-<span class="sourceLineNo">485</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.485"></a>
-<span class="sourceLineNo">486</span>        .setSplit(false)<a name="line.486"></a>
-<span class="sourceLineNo">487</span>        .setRegionId(regionId)<a name="line.487"></a>
-<span class="sourceLineNo">488</span>        .setReplicaId(0)<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        .build();<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span>    Table meta = MetaTableAccessor.getMetaHTable(connection);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    try {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      List&lt;RegionInfo&gt; regionInfos = Lists.newArrayList(primary);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      MetaTableAccessor.addRegionsToMeta(connection, regionInfos, 3);<a name="line.494"></a>
+<span class="sourceLineNo">332</span>  public void testParseReplicaIdFromServerColumn() {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    String column1 = HConstants.SERVER_QUALIFIER_STR;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    assertEquals(0, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column1)));<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    String column2 = column1 + MetaTableAccessor.META_REPLICA_ID_DELIMITER;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column2)));<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    String column3 = column2 + "00";<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column3)));<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    String column4 = column3 + "2A";<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    assertEquals(42, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column4)));<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    String column5 = column4 + "2A";<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column5)));<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    String column6 = HConstants.STARTCODE_QUALIFIER_STR;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column6)));<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  }<a name="line.345"></a>
+<span class="sourceLineNo">346</span><a name="line.346"></a>
+<span class="sourceLineNo">347</span>  @Test<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  public void testMetaReaderGetColumnMethods() {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    Assert.assertArrayEquals(HConstants.SERVER_QUALIFIER, MetaTableAccessor.getServerColumn(0));<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.SERVER_QUALIFIER_STR<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      MetaTableAccessor.getServerColumn(42));<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    Assert.assertArrayEquals(HConstants.STARTCODE_QUALIFIER,<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      MetaTableAccessor.getStartCodeColumn(0));<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.STARTCODE_QUALIFIER_STR<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      MetaTableAccessor.getStartCodeColumn(42));<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>    Assert.assertArrayEquals(HConstants.SEQNUM_QUALIFIER,<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      MetaTableAccessor.getSeqNumColumn(0));<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.SEQNUM_QUALIFIER_STR<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      MetaTableAccessor.getSeqNumColumn(42));<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  }<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>  @Test<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  public void testMetaLocationsForRegionReplicas() throws IOException {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    ServerName serverName0 = ServerName.valueOf("foo", 60010, random.nextLong());<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    ServerName serverName1 = ServerName.valueOf("bar", 60010, random.nextLong());<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    ServerName serverName100 = ServerName.valueOf("baz", 60010, random.nextLong());<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>    long regionId = System.currentTimeMillis();<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    RegionInfo primary = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.374"></a>
+<span class="sourceLineNo">375</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.376"></a>
+<span class="sourceLineNo">377</span>        .setSplit(false)<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        .setRegionId(regionId)<a name="line.378"></a>
+<span class="sourceLineNo">379</span>        .setReplicaId(0)<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        .build();<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    RegionInfo replica1 = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.381"></a>
+<span class="sourceLineNo">382</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.383"></a>
+<span class="sourceLineNo">384</span>        .setSplit(false)<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        .setRegionId(regionId)<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        .setReplicaId(1)<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        .build();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    RegionInfo replica100 = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        .setSplit(false)<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        .setRegionId(regionId)<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        .setReplicaId(100)<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        .build();<a name="line.394"></a>
+<span class="sourceLineNo">395</span><a name="line.395"></a>
+<span class="sourceLineNo">396</span>    long seqNum0 = random.nextLong();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    long seqNum1 = random.nextLong();<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    long seqNum100 = random.nextLong();<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>    try (Table meta = MetaTableAccessor.getMetaHTable(connection)) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      MetaTableAccessor.updateRegionLocation(connection, primary, serverName0, seqNum0,<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        EnvironmentEdgeManager.currentTime());<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>      // assert that the server, startcode and seqNum columns are there for the primary region<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>      // add replica = 1<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      MetaTableAccessor.updateRegionLocation(connection, replica1, serverName1, seqNum1,<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        EnvironmentEdgeManager.currentTime());<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      // check whether the primary is still there<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      // now check for replica 1<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      assertMetaLocation(meta, primary.getRegionName(), serverName1, seqNum1, 1, true);<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>      // add replica = 1<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      MetaTableAccessor.updateRegionLocation(connection, replica100, serverName100, seqNum100,<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        EnvironmentEdgeManager.currentTime());<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      // check whether the primary is still there<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      // check whether the replica 1 is still there<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      assertMetaLocation(meta, primary.getRegionName(), serverName1, seqNum1, 1, true);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      // now check for replica 1<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      assertMetaLocation(meta, primary.getRegionName(), serverName100, seqNum100, 100, true);<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">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  public static void assertMetaLocation(Table meta, byte[] row, ServerName serverName,<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      long seqNum, int replicaId, boolean checkSeqNum) throws IOException {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    Get get = new Get(row);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    Result result = meta.get(get);<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    assertTrue(Bytes.equals(<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getServerColumn(replicaId)),<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      Bytes.toBytes(serverName.getHostAndPort())));<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    assertTrue(Bytes.equals(<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getStartCodeColumn(replicaId)),<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      Bytes.toBytes(serverName.getStartcode())));<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    if (checkSeqNum) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      assertTrue(Bytes.equals(<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getSeqNumColumn(replicaId)),<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        Bytes.toBytes(seqNum)));<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><a name="line.443"></a>
+<span class="sourceLineNo">444</span>  public static void assertEmptyMetaLocation(Table meta, byte[] row, int replicaId)<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      throws IOException {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    Get get = new Get(row);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    Result result = meta.get(get);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    Cell serverCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.448"></a>
+<span class="sourceLineNo">449</span>        MetaTableAccessor.getServerColumn(replicaId));<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    Cell startCodeCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      MetaTableAccessor.getStartCodeColumn(replicaId));<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    assertNotNull(serverCell);<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    assertNotNull(startCodeCell);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    assertEquals(0, serverCell.getValueLength());<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    assertEquals(0, startCodeCell.getValueLength());<a name="line.455"></a>
+<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>  @Test<a name="line.458"></a>
+<span class="sourceLineNo">459</span>  public void testMetaLocationForRegionReplicasIsRemovedAtTableDeletion() throws IOException {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    long regionId = System.currentTimeMillis();<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    RegionInfo primary = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.461"></a>
+<span class="sourceLineNo">462</span>        .setStartKey(HConstants.EMPTY_START_ROW).setEndKey(HConstants.EMPTY_END_ROW).setSplit(false)<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        .setRegionId(regionId).setReplicaId(0).build();<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>    Table meta = MetaTableAccessor.getMetaHTable(connection);<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    try {<a name="line.466"></a>
+<span class="sourceLineNo">467</span>      List&lt;RegionInfo&gt; regionInfos = Lists.newArrayList(primary);<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      MetaTableAccessor.addRegionsToMeta(connection, regionInfos, 3);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      MetaTableAccessor.removeRegionReplicasFromMeta(Sets.newHashSet(primary.getRegionName()), 1, 2,<a name="line.469"></a>
+<span class="sourceLineNo">470</span>        connection);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      Get get = new Get(primary.getRegionName());<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      Result result = meta.get(get);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      for (int replicaId = 0; replicaId &lt; 3; replicaId++) {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>        Cell serverCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.474"></a>
+<span class="sourceLineNo">475</span>          MetaTableAccessor.getServerColumn(replicaId));<a name="line.475"></a>
+<span class="sourceLineNo">476</span>        Cell startCodeCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.476"></a>
+<span class="sourceLineNo">477</span>          MetaTableAccessor.getStartCodeColumn(replicaId));<a name="line.477"></a>
+<span class="sourceLineNo">478</span>        Cell stateCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.478"></a>
+<span class="sourceLineNo"

<TRUNCATED>

[31/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/regionserver/HStoreFile.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HStoreFile.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HStoreFile.html
index 0ddf199..ec635e7 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HStoreFile.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HStoreFile.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};
+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";
@@ -109,14 +109,14 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <dl>
 <dt>All Implemented Interfaces:</dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></dd>
+<dd><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a></dd>
 </dl>
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.60">HStoreFile</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.66">HStoreFile</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
-implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></pre>
+implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a></pre>
 <div class="block">A Store data file.  Stores usually have one or more of these files.  They
  are produced by flushing the memstore to disk.  To
  create, instantiate a writer using <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html" title="class in org.apache.hadoop.hbase.regionserver"><code>StoreFileWriter.Builder</code></a>
@@ -295,6 +295,10 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#STORE_FILE_READER_NO_READAHEAD">STORE_FILE_READER_NO_READAHEAD</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#streamReaders">streamReaders</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#TIMERANGE_KEY">TIMERANGE_KEY</a></span></code>
 <div class="block">Key for Timerange information in metadata</div>
@@ -354,100 +358,104 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#closeStoreFile-boolean-">closeStoreFile</a></span>(boolean&nbsp;evictOnClose)</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/regionserver/HStoreFile.html#closeStreamReaders-boolean-">closeStreamReaders</a></span>(boolean&nbsp;evictOnClose)</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#createStreamReader-boolean-">createStreamReader</a></span>(boolean&nbsp;canUseDropBehind)</code>&nbsp;</td>
 </tr>
-<tr id="i2" class="altColor">
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#deleteStoreFile--">deleteStoreFile</a></span>()</code>
 <div class="block">Delete this file</div>
 </td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i4" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#excludeFromMinorCompaction--">excludeFromMinorCompaction</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getBulkLoadTimestamp--">getBulkLoadTimestamp</a></span>()</code>
 <div class="block">Return the timestamp at which this bulk load file was generated.</div>
 </td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getCacheConf--">getCacheConf</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getComparator--">getComparator</a></span>()</code>
 <div class="block">Get the comparator for comparing two cells.</div>
 </td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getFileInfo--">getFileInfo</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code><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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getFirstKey--">getFirstKey</a></span>()</code>
 <div class="block">Get the first key in this store file.</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getHDFSBlockDistribution--">getHDFSBlockDistribution</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code><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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getLastKey--">getLastKey</a></span>()</code>
 <div class="block">Get the last key in this store file.</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getMaximumTimestamp--">getMaximumTimestamp</a></span>()</code>
 <div class="block">Get the max timestamp of all the cells in the store file.</div>
 </td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getMaxMemStoreTS--">getMaxMemStoreTS</a></span>()</code>
 <div class="block">Get max of the MemstoreTS in the KV's in this store file.</div>
 </td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getMaxSequenceId--">getMaxSequenceId</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getMetadataValue-byte:A-">getMetadataValue</a></span>(byte[]&nbsp;key)</code>
 <div class="block">Only used by the Striped Compaction Policy</div>
 </td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getMinimumTimestamp--">getMinimumTimestamp</a></span>()</code>
 <div class="block">Get the min timestamp of all the cells in the store file.</div>
 </td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getModificationTimestamp--">getModificationTimestamp</a></span>()</code>
 <div class="block">Get the modification time of this store file.</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getModificationTimeStamp--">getModificationTimeStamp</a></span>()</code>
 <div class="block">Get the modification time of this store file.</div>
 </td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getPath--">getPath</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getPreadScanner-boolean-long-long-boolean-">getPreadScanner</a></span>(boolean&nbsp;cacheBlocks,
                long&nbsp;readPt,
@@ -456,19 +464,19 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <div class="block">Get a scanner which uses pread.</div>
 </td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getQualifiedPath--">getQualifiedPath</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getReader--">getReader</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getRefCount--">getRefCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i24" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#getStreamScanner-boolean-boolean-boolean-long-long-boolean-">getStreamScanner</a></span>(boolean&nbsp;canUseDropBehind,
                 boolean&nbsp;cacheBlocks,
@@ -479,59 +487,63 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <div class="block">Get a scanner which uses streaming read.</div>
 </td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i25" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#initReader--">initReader</a></span>()</code>
 <div class="block">Initialize the reader used for pread.</div>
 </td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i26" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#isBulkLoadResult--">isBulkLoadResult</a></span>()</code>
 <div class="block">Check if this storefile was created by bulk load.</div>
 </td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#isCompactedAway--">isCompactedAway</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i28" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#isHFile--">isHFile</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i29" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#isMajorCompactionResult--">isMajorCompactionResult</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i30" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#isReference--">isReference</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i31" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#isReferencedInReads--">isReferencedInReads</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i32" class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#isSkipResetSeqId-byte:A-">isSkipResetSeqId</a></span>(byte[]&nbsp;skipResetSeqId)</code>
 <div class="block">Gets whether to skip resetting the sequence id for cells.</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/regionserver/HStoreFile.html#markCompactedAway--">markCompactedAway</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#open--">open</a></span>()</code>
 <div class="block">Opens reader on this store file.</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/regionserver/HStoreFile.html#storeFileReaderClosed-org.apache.hadoop.hbase.regionserver.StoreFileReader-">storeFileReaderClosed</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;reader)</code>&nbsp;</td>
+</tr>
+<tr id="i36" class="altColor">
 <td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#toString--">toString</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i35" class="rowColor">
+<tr id="i37" class="rowColor">
 <td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#toStringDetailed--">toStringDetailed</a></span>()</code>&nbsp;</td>
 </tr>
@@ -563,7 +575,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <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/regionserver/HStoreFile.html#line.62">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.68">LOG</a></pre>
 </li>
 </ul>
 <a name="STORE_FILE_READER_NO_READAHEAD">
@@ -572,7 +584,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>STORE_FILE_READER_NO_READAHEAD</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/regionserver/HStoreFile.html#line.64">STORE_FILE_READER_NO_READAHEAD</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/regionserver/HStoreFile.html#line.70">STORE_FILE_READER_NO_READAHEAD</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HStoreFile.STORE_FILE_READER_NO_READAHEAD">Constant Field Values</a></dd>
@@ -585,7 +597,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_STORE_FILE_READER_NO_READAHEAD</h4>
-<pre>private static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.66">DEFAULT_STORE_FILE_READER_NO_READAHEAD</a></pre>
+<pre>private static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.72">DEFAULT_STORE_FILE_READER_NO_READAHEAD</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HStoreFile.DEFAULT_STORE_FILE_READER_NO_READAHEAD">Constant Field Values</a></dd>
@@ -598,7 +610,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>MAX_SEQ_ID_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.71">MAX_SEQ_ID_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.77">MAX_SEQ_ID_KEY</a></pre>
 <div class="block">Max Sequence ID in FileInfo</div>
 </li>
 </ul>
@@ -608,7 +620,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>MAJOR_COMPACTION_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.74">MAJOR_COMPACTION_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.80">MAJOR_COMPACTION_KEY</a></pre>
 <div class="block">Major compaction flag in FileInfo</div>
 </li>
 </ul>
@@ -618,7 +630,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>EXCLUDE_FROM_MINOR_COMPACTION_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.77">EXCLUDE_FROM_MINOR_COMPACTION_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.83">EXCLUDE_FROM_MINOR_COMPACTION_KEY</a></pre>
 <div class="block">Minor compaction flag in FileInfo</div>
 </li>
 </ul>
@@ -628,7 +640,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>BLOOM_FILTER_TYPE_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.81">BLOOM_FILTER_TYPE_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.87">BLOOM_FILTER_TYPE_KEY</a></pre>
 <div class="block">Bloom filter Type in FileInfo</div>
 </li>
 </ul>
@@ -638,7 +650,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>DELETE_FAMILY_COUNT</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.84">DELETE_FAMILY_COUNT</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.90">DELETE_FAMILY_COUNT</a></pre>
 <div class="block">Delete Family Count in FileInfo</div>
 </li>
 </ul>
@@ -648,7 +660,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>LAST_BLOOM_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.87">LAST_BLOOM_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.93">LAST_BLOOM_KEY</a></pre>
 <div class="block">Last Bloom filter key in FileInfo</div>
 </li>
 </ul>
@@ -658,7 +670,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>TIMERANGE_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.90">TIMERANGE_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.96">TIMERANGE_KEY</a></pre>
 <div class="block">Key for Timerange information in metadata</div>
 </li>
 </ul>
@@ -668,7 +680,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>EARLIEST_PUT_TS</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.93">EARLIEST_PUT_TS</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.99">EARLIEST_PUT_TS</a></pre>
 <div class="block">Key for timestamp of earliest-put in metadata</div>
 </li>
 </ul>
@@ -678,7 +690,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>MOB_CELLS_COUNT</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.96">MOB_CELLS_COUNT</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.102">MOB_CELLS_COUNT</a></pre>
 <div class="block">Key for the number of mob cells in metadata</div>
 </li>
 </ul>
@@ -688,7 +700,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>BULKLOAD_TASK_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.99">BULKLOAD_TASK_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.105">BULKLOAD_TASK_KEY</a></pre>
 <div class="block">Meta key set when store file is a result of a bulk load</div>
 </li>
 </ul>
@@ -698,7 +710,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>BULKLOAD_TIME_KEY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.100">BULKLOAD_TIME_KEY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.106">BULKLOAD_TIME_KEY</a></pre>
 </li>
 </ul>
 <a name="SKIP_RESET_SEQ_ID">
@@ -707,7 +719,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>SKIP_RESET_SEQ_ID</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.106">SKIP_RESET_SEQ_ID</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.112">SKIP_RESET_SEQ_ID</a></pre>
 <div class="block">Key for skipping resetting sequence id in metadata. For bulk loaded hfiles, the scanner resets
  the cell seqId with the latest one, if this metadata is set as true, the reset is skipped.</div>
 </li>
@@ -718,7 +730,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>fileInfo</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.108">fileInfo</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.114">fileInfo</a></pre>
 </li>
 </ul>
 <a name="fs">
@@ -727,7 +739,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>fs</h4>
-<pre>private final&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.109">fs</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.115">fs</a></pre>
 </li>
 </ul>
 <a name="cacheConf">
@@ -736,7 +748,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheConf</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.112">cacheConf</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.118">cacheConf</a></pre>
 </li>
 </ul>
 <a name="refCount">
@@ -745,7 +757,16 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>refCount</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.117">refCount</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.123">refCount</a></pre>
+</li>
+</ul>
+<a name="streamReaders">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>streamReaders</h4>
+<pre>private final&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="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.126">streamReaders</a></pre>
 </li>
 </ul>
 <a name="noReadahead">
@@ -754,7 +775,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>noReadahead</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.119">noReadahead</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.128">noReadahead</a></pre>
 </li>
 </ul>
 <a name="primaryReplica">
@@ -763,7 +784,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>primaryReplica</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.121">primaryReplica</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.130">primaryReplica</a></pre>
 </li>
 </ul>
 <a name="compactedAway">
@@ -772,7 +793,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>compactedAway</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.124">compactedAway</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.133">compactedAway</a></pre>
 </li>
 </ul>
 <a name="sequenceid">
@@ -781,7 +802,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>sequenceid</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.128">sequenceid</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.137">sequenceid</a></pre>
 </li>
 </ul>
 <a name="maxMemstoreTS">
@@ -790,7 +811,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>maxMemstoreTS</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.132">maxMemstoreTS</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.141">maxMemstoreTS</a></pre>
 </li>
 </ul>
 <a name="firstKey">
@@ -799,7 +820,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>firstKey</h4>
-<pre>private&nbsp;<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.135">firstKey</a></pre>
+<pre>private&nbsp;<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.144">firstKey</a></pre>
 </li>
 </ul>
 <a name="lastKey">
@@ -808,7 +829,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>lastKey</h4>
-<pre>private&nbsp;<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.137">lastKey</a></pre>
+<pre>private&nbsp;<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.146">lastKey</a></pre>
 </li>
 </ul>
 <a name="comparator">
@@ -817,7 +838,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>comparator</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.139">comparator</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.148">comparator</a></pre>
 </li>
 </ul>
 <a name="majorCompaction">
@@ -826,7 +847,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>majorCompaction</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.167">majorCompaction</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.176">majorCompaction</a></pre>
 </li>
 </ul>
 <a name="excludeFromMinorCompaction">
@@ -835,7 +856,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>excludeFromMinorCompaction</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.171">excludeFromMinorCompaction</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.180">excludeFromMinorCompaction</a></pre>
 </li>
 </ul>
 <a name="metadataMap">
@@ -844,7 +865,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>metadataMap</h4>
-<pre>private&nbsp;<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;byte[],byte[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.177">metadataMap</a></pre>
+<pre>private&nbsp;<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;byte[],byte[]&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.186">metadataMap</a></pre>
 <div class="block">Map of the metadata entries in the corresponding HFile. Populated when Reader is opened
  after which it is not modified again.</div>
 </li>
@@ -855,7 +876,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>reader</h4>
-<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.180">reader</a></pre>
+<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.189">reader</a></pre>
 </li>
 </ul>
 <a name="cfBloomType">
@@ -864,7 +885,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockListLast">
 <li class="blockList">
 <h4>cfBloomType</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.186">cfBloomType</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.195">cfBloomType</a></pre>
 <div class="block">Bloom filter type specified in column family configuration. Does not
  necessarily correspond to the Bloom filter type present in the HFile.</div>
 </li>
@@ -883,7 +904,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>HStoreFile</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.202">HStoreFile</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.211">HStoreFile</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                   org.apache.hadoop.fs.Path&nbsp;p,
                   org.apache.hadoop.conf.Configuration&nbsp;conf,
                   <a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a>&nbsp;cacheConf,
@@ -914,7 +935,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HStoreFile</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.220">HStoreFile</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.229">HStoreFile</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&nbsp;fileInfo,
                   org.apache.hadoop.conf.Configuration&nbsp;conf,
                   <a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a>&nbsp;cacheConf,
@@ -950,7 +971,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getCacheConf</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.141">getCacheConf</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.150">getCacheConf</a>()</pre>
 </li>
 </ul>
 <a name="getFirstKey--">
@@ -959,7 +980,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getFirstKey</h4>
-<pre>public&nbsp;<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.146">getFirstKey</a>()</pre>
+<pre>public&nbsp;<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.155">getFirstKey</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getFirstKey--">StoreFile</a></code></span></div>
 <div class="block">Get the first key in this store file.</div>
 <dl>
@@ -974,7 +995,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastKey</h4>
-<pre>public&nbsp;<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.151">getLastKey</a>()</pre>
+<pre>public&nbsp;<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.160">getLastKey</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getLastKey--">StoreFile</a></code></span></div>
 <div class="block">Get the last key in this store file.</div>
 <dl>
@@ -989,7 +1010,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getComparator</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.156">getComparator</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.165">getComparator</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getComparator--">StoreFile</a></code></span></div>
 <div class="block">Get the comparator for comparing two cells.</div>
 <dl>
@@ -1004,7 +1025,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxMemStoreTS</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.161">getMaxMemStoreTS</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.170">getMaxMemStoreTS</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getMaxMemStoreTS--">StoreFile</a></code></span></div>
 <div class="block">Get max of the MemstoreTS in the KV's in this store file.</div>
 <dl>
@@ -1019,7 +1040,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getFileInfo</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.241">getFileInfo</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.251">getFileInfo</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the StoreFile object associated to this StoreFile. null if the StoreFile is not a
@@ -1033,7 +1054,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getPath</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.246">getPath</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.256">getPath</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getPath--">getPath</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1048,7 +1069,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getQualifiedPath</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.251">getQualifiedPath</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.261">getQualifiedPath</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getQualifiedPath--">getQualifiedPath</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1063,7 +1084,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isReference</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.256">isReference</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.266">isReference</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#isReference--">isReference</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1078,7 +1099,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isHFile</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.261">isHFile</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.271">isHFile</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#isHFile--">isHFile</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1093,7 +1114,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isMajorCompactionResult</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.266">isMajorCompactionResult</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.276">isMajorCompactionResult</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#isMajorCompactionResult--">isMajorCompactionResult</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1108,7 +1129,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>excludeFromMinorCompaction</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.274">excludeFromMinorCompaction</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.284">excludeFromMinorCompaction</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#excludeFromMinorCompaction--">excludeFromMinorCompaction</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1123,7 +1144,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxSequenceId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.279">getMaxSequenceId</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.289">getMaxSequenceId</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getMaxSequenceId--">getMaxSequenceId</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1138,7 +1159,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getModificationTimeStamp</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.284">getModificationTimeStamp</a>()
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.294">getModificationTimeStamp</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></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getModificationTimeStamp--">StoreFile</a></code></span></div>
 <div class="block">Get the modification time of this store file. Usually will access the file system so throws
@@ -1159,7 +1180,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getModificationTimestamp</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.289">getModificationTimestamp</a>()
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.299">getModificationTimestamp</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></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getModificationTimestamp--">StoreFile</a></code></span></div>
 <div class="block">Get the modification time of this store file. Usually will access the file system so throws
@@ -1178,7 +1199,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetadataValue</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.298">getMetadataValue</a>(byte[]&nbsp;key)</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.308">getMetadataValue</a>(byte[]&nbsp;key)</pre>
 <div class="block">Only used by the Striped Compaction Policy</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1194,7 +1215,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isBulkLoadResult</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.303">isBulkLoadResult</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.313">isBulkLoadResult</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#isBulkLoadResult--">StoreFile</a></code></span></div>
 <div class="block">Check if this storefile was created by bulk load. When a hfile is bulk loaded into HBase, we
  append <code>'_SeqId_&lt;id-when-loaded&gt;'</code> to the hfile name, unless
@@ -1215,7 +1236,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isCompactedAway</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.313">isCompactedAway</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.323">isCompactedAway</a>()</pre>
 </li>
 </ul>
 <a name="getRefCount--">
@@ -1224,7 +1245,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getRefCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.318">getRefCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.328">getRefCount</a>()</pre>
 </li>
 </ul>
 <a name="isReferencedInReads--">
@@ -1233,7 +1254,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isReferencedInReads</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.325">isReferencedInReads</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.335">isReferencedInReads</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>true if the file is still used in reads</dd>
@@ -1246,7 +1267,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getBulkLoadTimestamp</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.332">getBulkLoadTimestamp</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.342">getBulkLoadTimestamp</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getBulkLoadTimestamp--">StoreFile</a></code></span></div>
 <div class="block">Return the timestamp at which this bulk load file was generated.</div>
 <dl>
@@ -1261,7 +1282,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getHDFSBlockDistribution</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.342">getHDFSBlockDistribution</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.352">getHDFSBlockDistribution</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the cached value of HDFS blocks distribution. The cached value is calculated when store
@@ -1275,7 +1296,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>open</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.351">open</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.361">open</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></pre>
 <div class="block">Opens reader on this store file. Called by Constructor.</div>
 <dl>
@@ -1292,7 +1313,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>initReader</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.462">initReader</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.472">initReader</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></pre>
 <div class="block">Initialize the reader used for pread.</div>
 <dl>
@@ -1307,7 +1328,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>createStreamReader</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.478">createStreamReader</a>(boolean&nbsp;canUseDropBehind)
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.488">createStreamReader</a>(boolean&nbsp;canUseDropBehind)
                                     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>
@@ -1321,7 +1342,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getPreadScanner</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.491">getPreadScanner</a>(boolean&nbsp;cacheBlocks,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.501">getPreadScanner</a>(boolean&nbsp;cacheBlocks,
                                         long&nbsp;readPt,
                                         long&nbsp;scannerOrder,
                                         boolean&nbsp;canOptimizeForNonNullColumn)</pre>
@@ -1336,7 +1357,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getStreamScanner</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.502">getStreamScanner</a>(boolean&nbsp;canUseDropBehind,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.512">getStreamScanner</a>(boolean&nbsp;canUseDropBehind,
                                          boolean&nbsp;cacheBlocks,
                                          boolean&nbsp;isCompaction,
                                          long&nbsp;readPt,
@@ -1358,7 +1379,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getReader</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.513">getReader</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.528">getReader</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Current reader. Must call initReader first else returns null.</dd>
@@ -1373,7 +1394,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>closeStoreFile</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.521">closeStoreFile</a>(boolean&nbsp;evictOnClose)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.536">closeStoreFile</a>(boolean&nbsp;evictOnClose)
                     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="paramLabel">Parameters:</span></dt>
@@ -1383,13 +1404,27 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 </dl>
 </li>
 </ul>
+<a name="closeStreamReaders-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>closeStreamReaders</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.544">closeStreamReaders</a>(boolean&nbsp;evictOnClose)
+                        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>
+<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>
+</dl>
+</li>
+</ul>
 <a name="deleteStoreFile--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteStoreFile</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.532">deleteStoreFile</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.560">deleteStoreFile</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></pre>
 <div class="block">Delete this file</div>
 <dl>
@@ -1404,7 +1439,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>markCompactedAway</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.538">markCompactedAway</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.566">markCompactedAway</a>()</pre>
 </li>
 </ul>
 <a name="toString--">
@@ -1413,7 +1448,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&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/regionserver/HStoreFile.html#line.543">toString</a>()</pre>
+<pre>public&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/regionserver/HStoreFile.html#line.571">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><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></code>&nbsp;in class&nbsp;<code><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></code></dd>
@@ -1426,7 +1461,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringDetailed</h4>
-<pre>public&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/regionserver/HStoreFile.html#line.548">toStringDetailed</a>()</pre>
+<pre>public&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/regionserver/HStoreFile.html#line.576">toStringDetailed</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#toStringDetailed--">toStringDetailed</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a></code></dd>
@@ -1441,7 +1476,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>isSkipResetSeqId</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.574">isSkipResetSeqId</a>(byte[]&nbsp;skipResetSeqId)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.602">isSkipResetSeqId</a>(byte[]&nbsp;skipResetSeqId)</pre>
 <div class="block">Gets whether to skip resetting the sequence id for cells.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1457,7 +1492,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <ul class="blockList">
 <li class="blockList">
 <h4>getMinimumTimestamp</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.582">getMinimumTimestamp</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.610">getMinimumTimestamp</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getMinimumTimestamp--">StoreFile</a></code></span></div>
 <div class="block">Get the min timestamp of all the cells in the store file.</div>
 <dl>
@@ -1469,10 +1504,10 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 <a name="getMaximumTimestamp--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>getMaximumTimestamp</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.588">getMaximumTimestamp</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.616">getMaximumTimestamp</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html#getMaximumTimestamp--">StoreFile</a></code></span></div>
 <div class="block">Get the max timestamp of all the cells in the store file.</div>
 <dl>
@@ -1481,6 +1516,19 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFil
 </dl>
 </li>
 </ul>
+<a name="storeFileReaderClosed-org.apache.hadoop.hbase.regionserver.StoreFileReader-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>storeFileReaderClosed</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html#line.622">storeFileReaderClosed</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;reader)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html#storeFileReaderClosed-org.apache.hadoop.hbase.regionserver.StoreFileReader-">storeFileReaderClosed</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a></code></dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html
new file mode 100644
index 0000000..2b8598f
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html
@@ -0,0 +1,230 @@
+<!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>StoreFileReader.Listener (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="StoreFileReader.Listener (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":6};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract 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/StoreFileReader.Listener.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/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" target="_top">Frames</a></li>
+<li><a href="StoreFileReader.Listener.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>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&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.regionserver</div>
+<h2 title="Interface StoreFileReader.Listener" class="title">Interface StoreFileReader.Listener</h2>
+</div>
+<div class="contentContainer">
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Known Implementing Classes:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a></dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.665">StoreFileReader.Listener</a></pre>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== 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="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract 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/regionserver/StoreFileReader.Listener.html#storeFileReaderClosed-org.apache.hadoop.hbase.regionserver.StoreFileReader-">storeFileReaderClosed</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;reader)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="storeFileReaderClosed-org.apache.hadoop.hbase.regionserver.StoreFileReader-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>storeFileReaderClosed</h4>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html#line.666">storeFileReaderClosed</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;reader)</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/StoreFileReader.Listener.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/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" target="_top">Frames</a></li>
+<li><a href="StoreFileReader.Listener.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>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&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>


[29/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/regionserver/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/package-use.html b/devapidocs/org/apache/hadoop/hbase/regionserver/package-use.html
index d4b78a3..e9cc3ea 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-use.html
@@ -1826,80 +1826,83 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </td>
 </tr>
 <tr class="altColor">
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StoreFileReader.Listener.html#org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StorefileRefresherChore.html#org.apache.hadoop.hbase.regionserver">StorefileRefresherChore</a>
 <div class="block">A chore for refreshing the store files for secondary regions hosted in the region server.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StoreFileScanner.html#org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>
 <div class="block">KeyValueScanner adaptor over the Reader.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StoreFileWriter.html#org.apache.hadoop.hbase.regionserver">StoreFileWriter</a>
 <div class="block">A StoreFile writer.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StoreFileWriter.Builder.html#org.apache.hadoop.hbase.regionserver">StoreFileWriter.Builder</a>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StoreFlushContext.html#org.apache.hadoop.hbase.regionserver">StoreFlushContext</a>
 <div class="block">A package protected interface for a store flushing.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StoreFlusher.html#org.apache.hadoop.hbase.regionserver">StoreFlusher</a>
 <div class="block">Store flusher interface.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StoreScanner.html#org.apache.hadoop.hbase.regionserver">StoreScanner</a>
 <div class="block">Scanner scans both the memstore and the Store.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StripeMultiFileWriter.html#org.apache.hadoop.hbase.regionserver">StripeMultiFileWriter</a>
 <div class="block">Base class for cell sink that separates the provided cells into multiple files for stripe
  compaction.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StripeStoreConfig.html#org.apache.hadoop.hbase.regionserver">StripeStoreConfig</a>
 <div class="block">Configuration class for stripe store and compactions.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StripeStoreFileManager.html#org.apache.hadoop.hbase.regionserver">StripeStoreFileManager</a>
 <div class="block">Stripe implementation of StoreFileManager.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StripeStoreFileManager.State.html#org.apache.hadoop.hbase.regionserver">StripeStoreFileManager.State</a>
 <div class="block">The state class.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/StripeStoreFlusher.StripeFlushRequest.html#org.apache.hadoop.hbase.regionserver">StripeStoreFlusher.StripeFlushRequest</a>
 <div class="block">Stripe flush request wrapper that writes a non-striped file.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/TimeRangeTracker.html#org.apache.hadoop.hbase.regionserver">TimeRangeTracker</a>
 <div class="block">Stores minimum and maximum timestamp values, it is [minimumTimestamp, maximumTimestamp] in
  interval notation.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/TimeRangeTracker.Type.html#org.apache.hadoop.hbase.regionserver">TimeRangeTracker.Type</a>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/VersionedSegmentsList.html#org.apache.hadoop.hbase.regionserver">VersionedSegmentsList</a>
 <div class="block">A list of segment managers coupled with the version of the memstore (version at the time it was
  created).</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/regionserver/class-use/WrongRegionException.html#org.apache.hadoop.hbase.regionserver">WrongRegionException</a>
 <div class="block">Thrown when a request contains a key which is not part of this region</div>
 </td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/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 858ccf6..23060c2 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
@@ -130,8 +130,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.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>
+<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/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">ScanQueryMatcher.MatchCode</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/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 69f2dc6..f594c43 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
@@ -143,8 +143,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.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>
+<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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/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 dfa02b5..67b7e3a 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/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/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/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/SaslStatus.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslStatus</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
index 81a90a9..4ade4c1 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
@@ -199,9 +199,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.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServerRunner.ImplType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftMetrics.ThriftServerType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServerRunner.ImplType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/util/RetryCounterFactory.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/RetryCounterFactory.html b/devapidocs/org/apache/hadoop/hbase/util/RetryCounterFactory.html
index aa6a65c..3d6a65b 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/RetryCounterFactory.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/RetryCounterFactory.html
@@ -149,15 +149,18 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <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/util/RetryCounterFactory.html#RetryCounterFactory-int-">RetryCounterFactory</a></span>(int&nbsp;sleepIntervalMillis)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RetryCounterFactory.html#RetryCounterFactory-int-int-">RetryCounterFactory</a></span>(int&nbsp;maxAttempts,
                    int&nbsp;sleepIntervalMillis)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RetryCounterFactory.html#RetryCounterFactory-int-int-int-">RetryCounterFactory</a></span>(int&nbsp;maxAttempts,
                    int&nbsp;sleepIntervalMillis,
                    int&nbsp;maxSleepTime)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/util/RetryCounterFactory.html#RetryCounterFactory-org.apache.hadoop.hbase.util.RetryCounter.RetryConfig-">RetryCounterFactory</a></span>(<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a>&nbsp;retryConfig)</code>&nbsp;</td>
 </tr>
 </table>
@@ -218,13 +221,22 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <!--   -->
 </a>
 <h3>Constructor Detail</h3>
+<a name="RetryCounterFactory-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>RetryCounterFactory</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounterFactory.html#line.31">RetryCounterFactory</a>(int&nbsp;sleepIntervalMillis)</pre>
+</li>
+</ul>
 <a name="RetryCounterFactory-int-int-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>RetryCounterFactory</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounterFactory.html#line.31">RetryCounterFactory</a>(int&nbsp;maxAttempts,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounterFactory.html#line.35">RetryCounterFactory</a>(int&nbsp;maxAttempts,
                            int&nbsp;sleepIntervalMillis)</pre>
 </li>
 </ul>
@@ -234,7 +246,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>RetryCounterFactory</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounterFactory.html#line.35">RetryCounterFactory</a>(int&nbsp;maxAttempts,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounterFactory.html#line.39">RetryCounterFactory</a>(int&nbsp;maxAttempts,
                            int&nbsp;sleepIntervalMillis,
                            int&nbsp;maxSleepTime)</pre>
 </li>
@@ -245,7 +257,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RetryCounterFactory</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounterFactory.html#line.44">RetryCounterFactory</a>(<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a>&nbsp;retryConfig)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounterFactory.html#line.48">RetryCounterFactory</a>(<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.RetryConfig.html" title="class in org.apache.hadoop.hbase.util">RetryCounter.RetryConfig</a>&nbsp;retryConfig)</pre>
 </li>
 </ul>
 </li>
@@ -262,7 +274,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>create</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.html" title="class in org.apache.hadoop.hbase.util">RetryCounter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounterFactory.html#line.48">create</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/RetryCounter.html" title="class in org.apache.hadoop.hbase.util">RetryCounter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/RetryCounterFactory.html#line.52">create</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/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 759b0d7..813f5bb 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -515,14 +515,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/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/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/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/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.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/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.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/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/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/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/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/738e976e/devapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/overview-tree.html b/devapidocs/overview-tree.html
index dcb2f1a..19b564e 100644
--- a/devapidocs/overview-tree.html
+++ b/devapidocs/overview-tree.html
@@ -1951,7 +1951,7 @@
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HStore.StoreFlusherImpl</span></a> (implements org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFlushContext.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFlushContext</a>)</li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HStoreFile</span></a> (implements org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HStoreFile</span></a> (implements org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>, org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/HTable.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">HTable</span></a> (implements org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/HTable.CheckAndMutateBuilderImpl.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">HTable.CheckAndMutateBuilderImpl</span></a> (implements org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Table.CheckAndMutateBuilder.html" title="interface in org.apache.hadoop.hbase.client">Table.CheckAndMutateBuilder</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HTableDescriptor.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">HTableDescriptor</span></a> (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;, org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>)
@@ -5166,6 +5166,7 @@
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreConfigInformation.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">StoreConfigInformation</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">StoreFile</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileManager.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">StoreFileManager</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">StoreFileReader.Listener</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFlushContext.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">StoreFlushContext</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.compactions.<a href="org/apache/hadoop/hbase/regionserver/compactions/StripeCompactionPolicy.StripeInformationProvider.html" title="interface in org.apache.hadoop.hbase.regionserver.compactions"><span class="typeNameLink">StripeCompactionPolicy.StripeInformationProvider</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure.<a href="org/apache/hadoop/hbase/procedure/SubprocedureFactory.html" title="interface in org.apache.hadoop.hbase.procedure"><span class="typeNameLink">SubprocedureFactory</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/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 8bca119..b8964a9 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 = "e86c7360288cc077cd23af495fb443179ed0157b";<a name="line.11"></a>
+<span class="sourceLineNo">011</span>  public static final String revision = "6d7bc0e98b25215e79f67f107fd0d3306dfcf352";<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 = "Sun Sep 16 14:43:24 UTC 2018";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Mon Sep 17 14:44:40 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 = "a45edfd7b11ed6c5424b717c93e742a1";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "c84d66e08b953d4447102b307c654c63";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 


[11/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html
index 6df7d6a..b570921 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html
@@ -93,566 +93,587 @@
 <span class="sourceLineNo">085</span>  @VisibleForTesting<a name="line.85"></a>
 <span class="sourceLineNo">086</span>  final boolean shared;<a name="line.86"></a>
 <span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>  private StoreFileReader(HFile.Reader reader, AtomicInteger refCount, boolean shared) {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    this.reader = reader;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    bloomFilterType = BloomType.NONE;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    this.refCount = refCount;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    this.shared = shared;<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>  public StoreFileReader(FileSystem fs, Path path, CacheConfig cacheConf,<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      boolean primaryReplicaStoreFile, AtomicInteger refCount, boolean shared, Configuration conf)<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      throws IOException {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    this(HFile.createReader(fs, path, cacheConf, primaryReplicaStoreFile, conf), refCount, shared);<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>  public StoreFileReader(FileSystem fs, Path path, FSDataInputStreamWrapper in, long size,<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      CacheConfig cacheConf, boolean primaryReplicaStoreFile, AtomicInteger refCount,<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      boolean shared, Configuration conf) throws IOException {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    this(HFile.createReader(fs, path, in, size, cacheConf, primaryReplicaStoreFile, conf), refCount,<a name="line.104"></a>
-<span class="sourceLineNo">105</span>        shared);<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>  void copyFields(StoreFileReader reader) {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    this.generalBloomFilter = reader.generalBloomFilter;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    this.deleteFamilyBloomFilter = reader.deleteFamilyBloomFilter;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    this.bloomFilterType = reader.bloomFilterType;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    this.sequenceID = reader.sequenceID;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    this.timeRange = reader.timeRange;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    this.lastBloomKey = reader.lastBloomKey;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    this.bulkLoadResult = reader.bulkLoadResult;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    this.lastBloomKeyOnlyKV = reader.lastBloomKeyOnlyKV;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    this.skipResetSeqId = reader.skipResetSeqId;<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>  public boolean isPrimaryReplicaReader() {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    return reader.isPrimaryReplicaReader();<a name="line.121"></a>
+<span class="sourceLineNo">088</span>  private volatile Listener listener;<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  private boolean closed = false;<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private StoreFileReader(HFile.Reader reader, AtomicInteger refCount, boolean shared) {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    this.reader = reader;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    bloomFilterType = BloomType.NONE;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    this.refCount = refCount;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    this.shared = shared;<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>  public StoreFileReader(FileSystem fs, Path path, CacheConfig cacheConf,<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      boolean primaryReplicaStoreFile, AtomicInteger refCount, boolean shared, Configuration conf)<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      throws IOException {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    this(HFile.createReader(fs, path, cacheConf, primaryReplicaStoreFile, conf), refCount, shared);<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>  public StoreFileReader(FileSystem fs, Path path, FSDataInputStreamWrapper in, long size,<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      CacheConfig cacheConf, boolean primaryReplicaStoreFile, AtomicInteger refCount,<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      boolean shared, Configuration conf) throws IOException {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    this(HFile.createReader(fs, path, in, size, cacheConf, primaryReplicaStoreFile, conf), refCount,<a name="line.108"></a>
+<span class="sourceLineNo">109</span>        shared);<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>  void copyFields(StoreFileReader reader) {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    this.generalBloomFilter = reader.generalBloomFilter;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    this.deleteFamilyBloomFilter = reader.deleteFamilyBloomFilter;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    this.bloomFilterType = reader.bloomFilterType;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    this.sequenceID = reader.sequenceID;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    this.timeRange = reader.timeRange;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    this.lastBloomKey = reader.lastBloomKey;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    this.bulkLoadResult = reader.bulkLoadResult;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    this.lastBloomKeyOnlyKV = reader.lastBloomKeyOnlyKV;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    this.skipResetSeqId = reader.skipResetSeqId;<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>  /**<a name="line.124"></a>
-<span class="sourceLineNo">125</span>   * ONLY USE DEFAULT CONSTRUCTOR FOR UNIT TESTS<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   */<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  @VisibleForTesting<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  StoreFileReader() {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    this.refCount = new AtomicInteger(0);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    this.reader = null;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    this.shared = false;<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>  public CellComparator getComparator() {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return reader.getComparator();<a name="line.135"></a>
+<span class="sourceLineNo">124</span>  public boolean isPrimaryReplicaReader() {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    return reader.isPrimaryReplicaReader();<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  }<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>   * ONLY USE DEFAULT CONSTRUCTOR FOR UNIT TESTS<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   */<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  @VisibleForTesting<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  StoreFileReader() {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    this.refCount = new AtomicInteger(0);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    this.reader = null;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    this.shared = false;<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>   * Get a scanner to scan over this StoreFile.<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   * @param cacheBlocks should this scanner cache blocks?<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * @param pread use pread (for highly concurrent small readers)<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   * @param isCompaction is scanner being used for compaction?<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * @param scannerOrder Order of this scanner relative to other scanners. See<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   *          {@link KeyValueScanner#getScannerOrder()}.<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   * @param canOptimizeForNonNullColumn {@code true} if we can make sure there is no null column,<a name="line.145"></a>
-<span class="sourceLineNo">146</span>   *          otherwise {@code false}. This is a hint for optimization.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * @return a scanner<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   */<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  public StoreFileScanner getStoreFileScanner(boolean cacheBlocks, boolean pread,<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      boolean isCompaction, long readPt, long scannerOrder, boolean canOptimizeForNonNullColumn) {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    return new StoreFileScanner(this, getScanner(cacheBlocks, pread, isCompaction),<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        !isCompaction, reader.hasMVCCInfo(), readPt, scannerOrder, canOptimizeForNonNullColumn);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  }<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>   * Indicate that the scanner has started reading with this reader. We need to increment the ref<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   * count so reader is not close until some object is holding the lock<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   */<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  void incrementRefCount() {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    refCount.incrementAndGet();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>  }<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>   * Indicate that the scanner has finished reading with this reader. We need to decrement the ref<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * count, and also, if this is not the common pread reader, we should close it.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   */<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  void readCompleted() {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    refCount.decrementAndGet();<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    if (!shared) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      try {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        reader.close(false);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      } catch (IOException e) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>        LOG.warn("failed to close stream reader", e);<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      }<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    }<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>  /**<a name="line.178"></a>
-<span class="sourceLineNo">179</span>   * @deprecated Do not write further code which depends on this call. Instead<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   *   use getStoreFileScanner() which uses the StoreFileScanner class/interface<a name="line.180"></a>
-<span class="sourceLineNo">181</span>   *   which is the preferred way to scan a store with higher level concepts.<a name="line.181"></a>
-<span class="sourceLineNo">182</span>   *<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * @param cacheBlocks should we cache the blocks?<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * @param pread use pread (for concurrent small readers)<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * @return the underlying HFileScanner<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   */<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  @Deprecated<a name="line.187"></a>
-<span class="sourceLineNo">188</span>  public HFileScanner getScanner(boolean cacheBlocks, boolean pread) {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    return getScanner(cacheBlocks, pread, false);<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>   * @deprecated Do not write further code which depends on this call. Instead<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   *   use getStoreFileScanner() which uses the StoreFileScanner class/interface<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   *   which is the preferred way to scan a store with higher level concepts.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   *<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * @param cacheBlocks<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   *          should we cache the blocks?<a name="line.198"></a>
-<span class="sourceLineNo">199</span>   * @param pread<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   *          use pread (for concurrent small readers)<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   * @param isCompaction<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   *          is scanner being used for compaction?<a name="line.202"></a>
-<span class="sourceLineNo">203</span>   * @return the underlying HFileScanner<a name="line.203"></a>
-<span class="sourceLineNo">204</span>   */<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  @Deprecated<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  public HFileScanner getScanner(boolean cacheBlocks, boolean pread,<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      boolean isCompaction) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    return reader.getScanner(cacheBlocks, pread, isCompaction);<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>  public void close(boolean evictOnClose) throws IOException {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    reader.close(evictOnClose);<a name="line.212"></a>
+<span class="sourceLineNo">138</span>  public CellComparator getComparator() {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    return reader.getComparator();<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">143</span>   * Get a scanner to scan over this StoreFile.<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * @param cacheBlocks should this scanner cache blocks?<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * @param pread use pread (for highly concurrent small readers)<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   * @param isCompaction is scanner being used for compaction?<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * @param scannerOrder Order of this scanner relative to other scanners. See<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   *          {@link KeyValueScanner#getScannerOrder()}.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * @param canOptimizeForNonNullColumn {@code true} if we can make sure there is no null column,<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   *          otherwise {@code false}. This is a hint for optimization.<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * @return a scanner<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  public StoreFileScanner getStoreFileScanner(boolean cacheBlocks, boolean pread,<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      boolean isCompaction, long readPt, long scannerOrder, boolean canOptimizeForNonNullColumn) {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    return new StoreFileScanner(this, getScanner(cacheBlocks, pread, isCompaction),<a name="line.155"></a>
+<span class="sourceLineNo">156</span>        !isCompaction, reader.hasMVCCInfo(), readPt, scannerOrder, canOptimizeForNonNullColumn);<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>  /**<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   * Indicate that the scanner has started reading with this reader. We need to increment the ref<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   * count so reader is not close until some object is holding the lock<a name="line.161"></a>
+<span class="sourceLineNo">162</span>   */<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  void incrementRefCount() {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    refCount.incrementAndGet();<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>   * Indicate that the scanner has finished reading with this reader. We need to decrement the ref<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * count, and also, if this is not the common pread reader, we should close it.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  void readCompleted() {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    refCount.decrementAndGet();<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    if (!shared) {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      try {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        reader.close(false);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      } catch (IOException e) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        LOG.warn("failed to close stream reader", e);<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>  }<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>   * @deprecated Do not write further code which depends on this call. Instead<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   *   use getStoreFileScanner() which uses the StoreFileScanner class/interface<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   *   which is the preferred way to scan a store with higher level concepts.<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   *<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * @param cacheBlocks should we cache the blocks?<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   * @param pread use pread (for concurrent small readers)<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   * @return the underlying HFileScanner<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   */<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  @Deprecated<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  public HFileScanner getScanner(boolean cacheBlocks, boolean pread) {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    return getScanner(cacheBlocks, pread, false);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  }<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>  /**<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * @deprecated Do not write further code which depends on this call. Instead<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   *   use getStoreFileScanner() which uses the StoreFileScanner class/interface<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   *   which is the preferred way to scan a store with higher level concepts.<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   *<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   * @param cacheBlocks<a name="line.201"></a>
+<span class="sourceLineNo">202</span>   *          should we cache the blocks?<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   * @param pread<a name="line.203"></a>
+<span class="sourceLineNo">204</span>   *          use pread (for concurrent small readers)<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   * @param isCompaction<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   *          is scanner being used for compaction?<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * @return the underlying HFileScanner<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   */<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  @Deprecated<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  public HFileScanner getScanner(boolean cacheBlocks, boolean pread,<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      boolean isCompaction) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    return reader.getScanner(cacheBlocks, pread, isCompaction);<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>  /**<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * Check if this storeFile may contain keys within the TimeRange that<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   * have not expired (i.e. not older than oldestUnexpiredTS).<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * @param timeRange the timeRange to restrict<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * @param oldestUnexpiredTS the oldest timestamp that is not expired, as<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   *          determined by the column family's TTL<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * @return false if queried keys definitely don't exist in this StoreFile<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   */<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  boolean passesTimerangeFilter(TimeRange tr, long oldestUnexpiredTS) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    return this.timeRange == null? true:<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      this.timeRange.includesTimeRange(tr) &amp;&amp; this.timeRange.getMax() &gt;= oldestUnexpiredTS;<a name="line.225"></a>
+<span class="sourceLineNo">215</span>  public void close(boolean evictOnClose) throws IOException {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    synchronized (this) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      if (closed) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        return;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      reader.close(evictOnClose);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      closed = true;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    if (listener != null) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      listener.storeFileReaderClosed(this);<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>
 <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>   * Checks whether the given scan passes the Bloom filter (if present). Only<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * checks Bloom filters for single-row or single-row-column scans. Bloom<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * filter checking for multi-gets is implemented as part of the store<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * scanner system (see {@link StoreFileScanner#seek(Cell)} and uses<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   * the lower-level API {@link #passesGeneralRowBloomFilter(byte[], int, int)}<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   * and {@link #passesGeneralRowColBloomFilter(Cell)}.<a name="line.234"></a>
-<span class="sourceLineNo">235</span>   *<a name="line.235"></a>
-<span class="sourceLineNo">236</span>   * @param scan the scan specification. Used to determine the row, and to<a name="line.236"></a>
-<span class="sourceLineNo">237</span>   *          check whether this is a single-row ("get") scan.<a name="line.237"></a>
-<span class="sourceLineNo">238</span>   * @param columns the set of columns. Only used for row-column Bloom<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   *          filters.<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   * @return true if the scan with the given column set passes the Bloom<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   *         filter, or if the Bloom filter is not applicable for the scan.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   *         False if the Bloom filter is applicable and the scan fails it.<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   */<a name="line.243"></a>
-<span class="sourceLineNo">244</span>  boolean passesBloomFilter(Scan scan, final SortedSet&lt;byte[]&gt; columns) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    // Multi-column non-get scans will use Bloom filters through the<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    // lower-level API function that this function calls.<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    if (!scan.isGetScan()) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      return true;<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>    byte[] row = scan.getStartRow();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    switch (this.bloomFilterType) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      case ROW:<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        return passesGeneralRowBloomFilter(row, 0, row.length);<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>      case ROWCOL:<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        if (columns != null &amp;&amp; columns.size() == 1) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          byte[] column = columns.first();<a name="line.258"></a>
-<span class="sourceLineNo">259</span>          // create the required fake key<a name="line.259"></a>
-<span class="sourceLineNo">260</span>          Cell kvKey = PrivateCellUtil.createFirstOnRow(row, HConstants.EMPTY_BYTE_ARRAY, column);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          return passesGeneralRowColBloomFilter(kvKey);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        }<a name="line.262"></a>
+<span class="sourceLineNo">229</span>   * Check if this storeFile may contain keys within the TimeRange that<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * have not expired (i.e. not older than oldestUnexpiredTS).<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * @param timeRange the timeRange to restrict<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   * @param oldestUnexpiredTS the oldest timestamp that is not expired, as<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   *          determined by the column family's TTL<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * @return false if queried keys definitely don't exist in this StoreFile<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   */<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  boolean passesTimerangeFilter(TimeRange tr, long oldestUnexpiredTS) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    return this.timeRange == null? true:<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      this.timeRange.includesTimeRange(tr) &amp;&amp; this.timeRange.getMax() &gt;= oldestUnexpiredTS;<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>  /**<a name="line.241"></a>
+<span class="sourceLineNo">242</span>   * Checks whether the given scan passes the Bloom filter (if present). Only<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * checks Bloom filters for single-row or single-row-column scans. Bloom<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * filter checking for multi-gets is implemented as part of the store<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * scanner system (see {@link StoreFileScanner#seek(Cell)} and uses<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   * the lower-level API {@link #passesGeneralRowBloomFilter(byte[], int, int)}<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   * and {@link #passesGeneralRowColBloomFilter(Cell)}.<a name="line.247"></a>
+<span class="sourceLineNo">248</span>   *<a name="line.248"></a>
+<span class="sourceLineNo">249</span>   * @param scan the scan specification. Used to determine the row, and to<a name="line.249"></a>
+<span class="sourceLineNo">250</span>   *          check whether this is a single-row ("get") scan.<a name="line.250"></a>
+<span class="sourceLineNo">251</span>   * @param columns the set of columns. Only used for row-column Bloom<a name="line.251"></a>
+<span class="sourceLineNo">252</span>   *          filters.<a name="line.252"></a>
+<span class="sourceLineNo">253</span>   * @return true if the scan with the given column set passes the Bloom<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   *         filter, or if the Bloom filter is not applicable for the scan.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   *         False if the Bloom filter is applicable and the scan fails it.<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
+<span class="sourceLineNo">257</span>  boolean passesBloomFilter(Scan scan, final SortedSet&lt;byte[]&gt; columns) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    // Multi-column non-get scans will use Bloom filters through the<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    // lower-level API function that this function calls.<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    if (!scan.isGetScan()) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      return true;<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>        // For multi-column queries the Bloom filter is checked from the<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        // seekExact operation.<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        return true;<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>      default:<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        return true;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    }<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  }<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>  public boolean passesDeleteFamilyBloomFilter(byte[] row, int rowOffset,<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      int rowLen) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    // Cache Bloom filter as a local variable in case it is set to null by<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    // another thread on an IO error.<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    BloomFilter bloomFilter = this.deleteFamilyBloomFilter;<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // Empty file or there is no delete family at all<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    if (reader.getTrailer().getEntryCount() == 0 || deleteFamilyCnt == 0) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      return false;<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>    if (bloomFilter == null) {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      return true;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    }<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>    try {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      if (!bloomFilter.supportsAutoLoading()) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        return true;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      }<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      return bloomFilter.contains(row, rowOffset, rowLen, null);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    } catch (IllegalArgumentException e) {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      LOG.error("Bad Delete Family bloom filter data -- proceeding without",<a name="line.294"></a>
-<span class="sourceLineNo">295</span>          e);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      setDeleteFamilyBloomFilterFaulty();<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    }<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>    return true;<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  }<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 method for checking Bloom filters. Called directly from<a name="line.303"></a>
-<span class="sourceLineNo">304</span>   * StoreFileScanner in case of a multi-column query.<a name="line.304"></a>
-<span class="sourceLineNo">305</span>   *<a name="line.305"></a>
-<span class="sourceLineNo">306</span>   * @return True if passes<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   */<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  public boolean passesGeneralRowBloomFilter(byte[] row, int rowOffset, int rowLen) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    BloomFilter bloomFilter = this.generalBloomFilter;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    if (bloomFilter == null) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      return true;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    }<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>    // Used in ROW bloom<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    byte[] key = null;<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    if (rowOffset != 0 || rowLen != row.length) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      throw new AssertionError(<a name="line.317"></a>
-<span class="sourceLineNo">318</span>          "For row-only Bloom filters the row " + "must occupy the whole array");<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    key = row;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    return checkGeneralBloomFilter(key, null, bloomFilter);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>  }<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>   * A method for checking Bloom filters. Called directly from<a name="line.325"></a>
-<span class="sourceLineNo">326</span>   * StoreFileScanner in case of a multi-column query.<a name="line.326"></a>
-<span class="sourceLineNo">327</span>   *<a name="line.327"></a>
-<span class="sourceLineNo">328</span>   * @param cell<a name="line.328"></a>
-<span class="sourceLineNo">329</span>   *          the cell to check if present in BloomFilter<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * @return True if passes<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public boolean passesGeneralRowColBloomFilter(Cell cell) {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    BloomFilter bloomFilter = this.generalBloomFilter;<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    if (bloomFilter == null) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      return true;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    }<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    // Used in ROW_COL bloom<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    Cell kvKey = null;<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    // Already if the incoming key is a fake rowcol key then use it as it is<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    if (cell.getTypeByte() == KeyValue.Type.Maximum.getCode() &amp;&amp; cell.getFamilyLength() == 0) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      kvKey = cell;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    } else {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      kvKey = PrivateCellUtil.createFirstOnRowCol(cell);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    return checkGeneralBloomFilter(null, kvKey, bloomFilter);<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>  private boolean checkGeneralBloomFilter(byte[] key, Cell kvKey, BloomFilter bloomFilter) {<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    // Empty file<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    if (reader.getTrailer().getEntryCount() == 0) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      return false;<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    HFileBlock bloomBlock = null;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    try {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      boolean shouldCheckBloom;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      ByteBuff bloom;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      if (bloomFilter.supportsAutoLoading()) {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        bloom = null;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        shouldCheckBloom = true;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      } else {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        bloomBlock = reader.getMetaBlock(HFile.BLOOM_FILTER_DATA_KEY, true);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>        bloom = bloomBlock.getBufferWithoutHeader();<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        shouldCheckBloom = bloom != null;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      }<a name="line.364"></a>
-<span class="sourceLineNo">365</span><a name="line.365"></a>
-<span class="sourceLineNo">366</span>      if (shouldCheckBloom) {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        boolean exists;<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>        // Whether the primary Bloom key is greater than the last Bloom key<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        // from the file info. For row-column Bloom filters this is not yet<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        // a sufficient condition to return false.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        boolean keyIsAfterLast = (lastBloomKey != null);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>        // hbase:meta does not have blooms. So we need not have special interpretation<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        // of the hbase:meta cells.  We can safely use Bytes.BYTES_RAWCOMPARATOR for ROW Bloom<a name="line.374"></a>
-<span class="sourceLineNo">375</span>        if (keyIsAfterLast) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>          if (bloomFilterType == BloomType.ROW) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>            keyIsAfterLast = (Bytes.BYTES_RAWCOMPARATOR.compare(key, lastBloomKey) &gt; 0);<a name="line.377"></a>
-<span class="sourceLineNo">378</span>          } else {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>            keyIsAfterLast = (CellComparator.getInstance().compare(kvKey, lastBloomKeyOnlyKV)) &gt; 0;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>          }<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>        if (bloomFilterType == BloomType.ROWCOL) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>          // Since a Row Delete is essentially a DeleteFamily applied to all<a name="line.384"></a>
-<span class="sourceLineNo">385</span>          // columns, a file might be skipped if using row+col Bloom filter.<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          // In order to ensure this file is included an additional check is<a name="line.386"></a>
-<span class="sourceLineNo">387</span>          // required looking only for a row bloom.<a name="line.387"></a>
-<span class="sourceLineNo">388</span>          Cell rowBloomKey = PrivateCellUtil.createFirstOnRow(kvKey);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          // hbase:meta does not have blooms. So we need not have special interpretation<a name="line.389"></a>
-<span class="sourceLineNo">390</span>          // of the hbase:meta cells.  We can safely use Bytes.BYTES_RAWCOMPARATOR for ROW Bloom<a name="line.390"></a>
-<span class="sourceLineNo">391</span>          if (keyIsAfterLast<a name="line.391"></a>
-<span class="sourceLineNo">392</span>              &amp;&amp; (CellComparator.getInstance().compare(rowBloomKey, lastBloomKeyOnlyKV)) &gt; 0) {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>            exists = false;<a name="line.393"></a>
-<span class="sourceLineNo">394</span>          } else {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>            exists =<a name="line.395"></a>
-<span class="sourceLineNo">396</span>                bloomFilter.contains(kvKey, bloom, BloomType.ROWCOL) ||<a name="line.396"></a>
-<span class="sourceLineNo">397</span>                bloomFilter.contains(rowBloomKey, bloom, BloomType.ROWCOL);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>          }<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        } else {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>          exists = !keyIsAfterLast<a name="line.400"></a>
-<span class="sourceLineNo">401</span>              &amp;&amp; bloomFilter.contains(key, 0, key.length, bloom);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>        }<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>        return exists;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      }<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    } catch (IOException e) {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      LOG.error("Error reading bloom filter data -- proceeding without",<a name="line.407"></a>
-<span class="sourceLineNo">408</span>          e);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      setGeneralBloomFilterFaulty();<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    } catch (IllegalArgumentException e) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      LOG.error("Bad bloom filter data -- proceeding without", e);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      setGeneralBloomFilterFaulty();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    } finally {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      // Return the bloom block so that its ref count can be decremented.<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      reader.returnBlock(bloomBlock);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    return true;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>  /**<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * Checks whether the given scan rowkey range overlaps with the current storefile's<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   * @param scan the scan specification. Used to determine the rowkey range.<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * @return true if there is overlap, false otherwise<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   */<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  public boolean passesKeyRangeFilter(Scan scan) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    Optional&lt;Cell&gt; firstKeyKV = this.getFirstKey();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    Optional&lt;Cell&gt; lastKeyKV = this.getLastKey();<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    if (!firstKeyKV.isPresent() || !lastKeyKV.isPresent()) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      // the file is empty<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      return false;<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    }<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    if (Bytes.equals(scan.getStartRow(), HConstants.EMPTY_START_ROW) &amp;&amp;<a name="line.432"></a>
-<span class="sourceLineNo">433</span>        Bytes.equals(scan.getStopRow(), HConstants.EMPTY_END_ROW)) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      return true;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    }<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    byte[] smallestScanRow = scan.isReversed() ? scan.getStopRow() : scan.getStartRow();<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    byte[] largestScanRow = scan.isReversed() ? scan.getStartRow() : scan.getStopRow();<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    boolean nonOverLapping = (getComparator()<a name="line.438"></a>
-<span class="sourceLineNo">439</span>        .compareRows(firstKeyKV.get(), largestScanRow, 0, largestScanRow.length) &gt; 0 &amp;&amp;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        !Bytes.equals(scan.isReversed() ? scan.getStartRow() : scan.getStopRow(),<a name="line.440"></a>
-<span class="sourceLineNo">441</span>          HConstants.EMPTY_END_ROW)) ||<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        getComparator().compareRows(lastKeyKV.get(), smallestScanRow, 0,<a name="line.442"></a>
-<span class="sourceLineNo">443</span>          smallestScanRow.length) &lt; 0;<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    return !nonOverLapping;<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>  public Map&lt;byte[], byte[]&gt; loadFileInfo() throws IOException {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    Map&lt;byte [], byte []&gt; fi = reader.loadFileInfo();<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>    byte[] b = fi.get(BLOOM_FILTER_TYPE_KEY);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    if (b != null) {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      bloomFilterType = BloomType.valueOf(Bytes.toString(b));<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    }<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>    lastBloomKey = fi.get(LAST_BLOOM_KEY);<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    if(bloomFilterType == BloomType.ROWCOL) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      lastBloomKeyOnlyKV = new KeyValue.KeyOnlyKeyValue(lastBloomKey, 0, lastBloomKey.length);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    }<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    byte[] cnt = fi.get(DELETE_FAMILY_COUNT);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    if (cnt != null) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      deleteFamilyCnt = Bytes.toLong(cnt);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    }<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span>    return fi;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>  }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>  public void loadBloomfilter() {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    this.loadBloomfilter(BlockType.GENERAL_BLOOM_META);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    this.loadBloomfilter(BlockType.DELETE_FAMILY_BLOOM_META);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>  public void loadBloomfilter(BlockType blockType) {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    try {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      if (blockType == BlockType.GENERAL_BLOOM_META) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        if (this.generalBloomFilter != null)<a name="line.475"></a>
-<span class="sourceLineNo">476</span>          return; // Bloom has been loaded<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>        DataInput bloomMeta = reader.getGeneralBloomFilterMetadata();<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        if (bloomMeta != null) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>          // sanity check for NONE Bloom filter<a name="line.480"></a>
-<span class="sourceLineNo">481</span>          if (bloomFilterType == BloomType.NONE) {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>            throw new IOException(<a name="line.482"></a>
-<span class="sourceLineNo">483</span>                "valid bloom filter type not found in FileInfo");<a name="line.483"></a>
-<span class="sourceLineNo">484</span>          } else {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>            generalBloomFilter = BloomFilterFactory.createFromMeta(bloomMeta,<a name="line.485"></a>
-<span class="sourceLineNo">486</span>                reader);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>            if (LOG.isTraceEnabled()) {<a name="line.487"></a>
-<span class="sourceLineNo">488</span>              LOG.trace("Loaded " + bloomFilterType.toString() + " "<a name="line.488"></a>
-<span class="sourceLineNo">489</span>                + generalBloomFilter.getClass().getSimpleName()<a name="line.489"></a>
-<span class="sourceLineNo">490</span>                + " metadata for " + reader.getName());<a name="line.490"></a>
-<span class="sourceLineNo">491</span>            }<a name="line.491"></a>
-<span class="sourceLineNo">492</span>          }<a name="line.492"></a>
-<span class="sourceLineNo">493</span>        }<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      } else if (blockType == BlockType.DELETE_FAMILY_BLOOM_META) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>        if (this.deleteFamilyBloomFilter != null)<a name="line.495"></a>
-<span class="sourceLineNo">496</span>          return; // Bloom has been loaded<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>        DataInput bloomMeta = reader.getDeleteBloomFilterMetadata();<a name="line.498"></a>
-<span class="sourceLineNo">499</span>        if (bloomMeta != null) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>          deleteFamilyBloomFilter = BloomFilterFactory.createFromMeta(<a name="line.500"></a>
-<span class="sourceLineNo">501</span>              bloomMeta, reader);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>          LOG.info("Loaded Delete Family Bloom ("<a name="line.502"></a>
-<span class="sourceLineNo">503</span>              + deleteFamilyBloomFilter.getClass().getSimpleName()<a name="line.503"></a>
-<span class="sourceLineNo">504</span>              + ") metadata for " + reader.getName());<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        }<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      } else {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>        throw new RuntimeException("Block Type: " + blockType.toString()<a name="line.507"></a>
-<span class="sourceLineNo">508</span>            + "is not supported for Bloom filter");<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      }<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    } catch (IOException e) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      LOG.error("Error reading bloom filter meta for " + blockType<a name="line.511"></a>
-<span class="sourceLineNo">512</span>          + " -- proceeding without", e);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      setBloomFilterFaulty(blockType);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    } catch (IllegalArgumentException e) {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      LOG.error("Bad bloom filter meta " + blockType<a name="line.515"></a>
-<span class="sourceLineNo">516</span>          + " -- proceeding without", e);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      setBloomFilterFaulty(blockType);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    }<a name="line.518"></a>
-<span class="sourceLineNo">519</span>  }<a name="line.519"></a>
-<span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span>  private void setBloomFilterFaulty(BlockType blockType) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    if (blockType == BlockType.GENERAL_BLOOM_META) {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      setGeneralBloomFilterFaulty();<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    } else if (blockType == BlockType.DELETE_FAMILY_BLOOM_META) {<a name="line.524"></a>
-<span class="sourceLineNo">525</span>      setDeleteFamilyBloomFilterFaulty();<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    }<a name="line.526"></a>
-<span class="sourceLineNo">527</span>  }<a name="line.527"></a>
-<span class="sourceLineNo">528</span><a name="line.528"></a>
-<span class="sourceLineNo">529</span>  /**<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * The number of Bloom filter entries in this store file, or an estimate<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * thereof, if the Bloom filter is not loaded. This always returns an upper<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * bound of the number of Bloom filter entries.<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   *<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   * @return an estimate of the number of Bloom filter entries in this file<a name="line.534"></a>
-<span class="sourceLineNo">535</span>   */<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  public long getFilterEntries() {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    return generalBloomFilter != null ? generalBloomFilter.getKeyCount()<a name="line.537"></a>
-<span class="sourceLineNo">538</span>        : reader.getEntries();<a name="line.538"></a>
-<span class="sourceLineNo">539</span>  }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>  public void setGeneralBloomFilterFaulty() {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    generalBloomFilter = null;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>  }<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>  public void setDeleteFamilyBloomFilterFaulty() {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    this.deleteFamilyBloomFilter = null;<a name="line.546"></a>
-<span class="sourceLineNo">547</span>  }<a name="line.547"></a>
-<span class="sourceLineNo">548</span><a name="line.548"></a>
-<span class="sourceLineNo">549</span>  public Optional&lt;Cell&gt; getLastKey() {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    return reader.getLastKey();<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  }<a name="line.551"></a>
-<span class="sourceLineNo">552</span><a name="line.552"></a>
-<span class="sourceLineNo">553</span>  public Optional&lt;byte[]&gt; getLastRowKey() {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    return reader.getLastRowKey();<a name="line.554"></a>
-<span class="sourceLineNo">555</span>  }<a name="line.555"></a>
-<span class="sourceLineNo">556</span><a name="line.556"></a>
-<span class="sourceLineNo">557</span>  public Optional&lt;Cell&gt; midKey() throws IOException {<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    return reader.midKey();<a name="line.558"></a>
-<span class="sourceLineNo">559</span>  }<a name="line.559"></a>
-<span class="sourceLineNo">560</span><a name="line.560"></a>
-<span class="sourceLineNo">561</span>  public long length() {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    return reader.length();<a name="line.562"></a>
-<span class="sourceLineNo">563</span>  }<a name="line.563"></a>
-<span class="sourceLineNo">564</span><a name="line.564"></a>
-<span class="sourceLineNo">565</span>  public long getTotalUncompressedBytes() {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>    return reader.getTrailer().getTotalUncompressedBytes();<a name="line.566"></a>
-<span class="sourceLineNo">567</span>  }<a name="line.567"></a>
-<span class="sourceLineNo">568</span><a name="line.568"></a>
-<span class="sourceLineNo">569</span>  public long getEntries() {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    return reader.getEntries();<a name="line.570"></a>
-<span class="sourceLineNo">571</span>  }<a name="line.571"></a>
-<span class="sourceLineNo">572</span><a name="line.572"></a>
-<span class="sourceLineNo">573</span>  public long getDeleteFamilyCnt() {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    return deleteFamilyCnt;<a name="line.574"></a>
-<span class="sourceLineNo">575</span>  }<a name="line.575"></a>
-<span class="sourceLineNo">576</span><a name="line.576"></a>
-<span class="sourceLineNo">577</span>  public Optional&lt;Cell&gt; getFirstKey() {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    return reader.getFirstKey();<a name="line.578"></a>
-<span class="sourceLineNo">579</span>  }<a name="line.579"></a>
-<span class="sourceLineNo">580</span><a name="line.580"></a>
-<span class="sourceLineNo">581</span>  public long indexSize() {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    return reader.indexSize();<a name="line.582"></a>
-<span class="sourceLineNo">583</span>  }<a name="line.583"></a>
-<span class="sourceLineNo">584</span><a name="line.584"></a>
-<span class="sourceLineNo">585</span>  public BloomType getBloomFilterType() {<a name="line.585"></a>
-<span class="sourceLineNo">586</span>    return this.bloomFilterType;<a name="line.586"></a>
-<span class="sourceLineNo">587</span>  }<a name="line.587"></a>
-<span class="sourceLineNo">588</span><a name="line.588"></a>
-<span class="sourceLineNo">589</span>  public long getSequenceID() {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    return sequenceID;<a name="line.590"></a>
-<span class="sourceLineNo">591</span>  }<a name="line.591"></a>
-<span class="sourceLineNo">592</span><a name="line.592"></a>
-<span class="sourceLineNo">593</span>  public void setSequenceID(long sequenceID) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    this.sequenceID = sequenceID;<a name="line.594"></a>
-<span class="sourceLineNo">595</span>  }<a name="line.595"></a>
-<span class="sourceLineNo">596</span><a name="line.596"></a>
-<span class="sourceLineNo">597</span>  public void setBulkLoaded(boolean bulkLoadResult) {<a name="line.597"></a>
-<span class="sourceLineNo">598</span>    this.bulkLoadResult = bulkLoadResult;<a name="line.598"></a>
-<span class="sourceLineNo">599</span>  }<a name="line.599"></a>
-<span class="sourceLineNo">600</span><a name="line.600"></a>
-<span class="sourceLineNo">601</span>  public boolean isBulkLoaded() {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    return this.bulkLoadResult;<a name="line.602"></a>
-<span class="sourceLineNo">603</span>  }<a name="line.603"></a>
-<span class="sourceLineNo">604</span><a name="line.604"></a>
-<span class="sourceLineNo">605</span>  BloomFilter getGeneralBloomFilter() {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    return generalBloomFilter;<a name="line.606"></a>
-<span class="sourceLineNo">607</span>  }<a name="line.607"></a>
-<span class="sourceLineNo">608</span><a name="line.608"></a>
-<span class="sourceLineNo">609</span>  long getUncompressedDataIndexSize() {<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    return reader.getTrailer().getUncompressedDataIndexSize();<a name="line.610"></a>
-<span class="sourceLineNo">611</span>  }<a name="line.611"></a>
-<span class="sourceLineNo">612</span><a name="line.612"></a>
-<span class="sourceLineNo">613</span>  public long getTotalBloomSize() {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    if (generalBloomFilter == null)<a name="line.614"></a>
-<span class="sourceLineNo">615</span>      return 0;<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    return generalBloomFilter.getByteSize();<a name="line.616"></a>
-<span class="sourceLineNo">617</span>  }<a name="line.617"></a>
-<span class="sourceLineNo">618</span><a name="line.618"></a>
-<span class="sourceLineNo">619</span>  public int getHFileVersion() {<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    return reader.getTrailer().getMajorVersion();<a name="line.620"></a>
-<span class="sourceLineNo">621</span>  }<a name="line.621"></a>
-<span class="sourceLineNo">622</span><a name="line.622"></a>
-<span class="sourceLineNo">623</span>  public int getHFileMinorVersion() {<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    return reader.getTrailer().getMinorVersion();<a name="line.624"></a>
-<span class="sourceLineNo">625</span>  }<a name="line.625"></a>
-<span class="sourceLineNo">626</span><a name="line.626"></a>
-<span class="sourceLineNo">627</span>  public HFile.Reader getHFileReader() {<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    return reader;<a name="line.628"></a>
-<span class="sourceLineNo">629</span>  }<a name="line.629"></a>
-<span class="sourceLineNo">630</span><a name="line.630"></a>
-<span class="sourceLineNo">631</span>  void disableBloomFilterForTesting() {<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    generalBloomFilter = null;<a name="line.632"></a>
-<span class="sourceLineNo">633</span>    this.deleteFamilyBloomFilter = null;<a name="line.633"></a>
+<span class="sourceLineNo">264</span>    byte[] row = scan.getStartRow();<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    switch (this.bloomFilterType) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      case ROW:<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        return passesGeneralRowBloomFilter(row, 0, row.length);<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>      case ROWCOL:<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        if (columns != null &amp;&amp; columns.size() == 1) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>          byte[] column = columns.first();<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          // create the required fake key<a name="line.272"></a>
+<span class="sourceLineNo">273</span>          Cell kvKey = PrivateCellUtil.createFirstOnRow(row, HConstants.EMPTY_BYTE_ARRAY, column);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>          return passesGeneralRowColBloomFilter(kvKey);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>        // For multi-column queries the Bloom filter is checked from the<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        // seekExact operation.<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        return true;<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>      default:<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        return true;<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><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  public boolean passesDeleteFamilyBloomFilter(byte[] row, int rowOffset,<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      int rowLen) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    // Cache Bloom filter as a local variable in case it is set to null by<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    // another thread on an IO error.<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    BloomFilter bloomFilter = this.deleteFamilyBloomFilter;<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>    // Empty file or there is no delete family at all<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    if (reader.getTrailer().getEntryCount() == 0 || deleteFamilyCnt == 0) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      return false;<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    }<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>    if (bloomFilter == null) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      return true;<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>    try {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      if (!bloomFilter.supportsAutoLoading()) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        return true;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      }<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      return bloomFilter.contains(row, rowOffset, rowLen, null);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    } catch (IllegalArgumentException e) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      LOG.error("Bad Delete Family bloom filter data -- proceeding without",<a name="line.307"></a>
+<span class="sourceLineNo">308</span>          e);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      setDeleteFamilyBloomFilterFaulty();<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>    return true;<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>   * A method for checking Bloom filters. Called directly from<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * StoreFileScanner in case of a multi-column query.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   *<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @return True if passes<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public boolean passesGeneralRowBloomFilter(byte[] row, int rowOffset, int rowLen) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    BloomFilter bloomFilter = this.generalBloomFilter;<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    if (bloomFilter == null) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      return true;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>    // Used in ROW bloom<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    byte[] key = null;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    if (rowOffset != 0 || rowLen != row.length) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      throw new AssertionError(<a name="line.330"></a>
+<span class="sourceLineNo">331</span>          "For row-only Bloom filters the row " + "must occupy the whole array");<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    key = row;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    return checkGeneralBloomFilter(key, null, bloomFilter);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  }<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>  /**<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * A method for checking Bloom filters. Called directly from<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * StoreFileScanner in case of a multi-column query.<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   *<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * @param cell<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   *          the cell to check if present in BloomFilter<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   * @return True if passes<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   */<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  public boolean passesGeneralRowColBloomFilter(Cell cell) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    BloomFilter bloomFilter = this.generalBloomFilter;<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    if (bloomFilter == null) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      return true;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // Used in ROW_COL bloom<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    Cell kvKey = null;<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    // Already if the incoming key is a fake rowcol key then use it as it is<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    if (cell.getTypeByte() == KeyValue.Type.Maximum.getCode() &amp;&amp; cell.getFamilyLength() == 0) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      kvKey = cell;<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    } else {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      kvKey = PrivateCellUtil.createFirstOnRowCol(cell);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    }<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    return checkGeneralBloomFilter(null, kvKey, bloomFilter);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  }<a name="line.359"></a>
+<span class="sourceLineNo">360</span><a name="line.360"></a>
+<span class="sourceLineNo">361</span>  private boolean checkGeneralBloomFilter(byte[] key, Cell kvKey, BloomFilter bloomFilter) {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    // Empty file<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    if (reader.getTrailer().getEntryCount() == 0) {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      return false;<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    }<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    HFileBlock bloomBlock = null;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    try {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      boolean shouldCheckBloom;<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      ByteBuff bloom;<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      if (bloomFilter.supportsAutoLoading()) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        bloom = null;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        shouldCheckBloom = true;<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      } else {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        bloomBlock = reader.getMetaBlock(HFile.BLOOM_FILTER_DATA_KEY, true);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>        bloom = bloomBlock.getBufferWithoutHeader();<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        shouldCheckBloom = bloom != null;<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      }<a name="line.377"></a>
+<span class="sourceLineNo">378</span><a name="line.378"></a>
+<span class="sourceLineNo">379</span>      if (shouldCheckBloom) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        boolean exists;<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>        // Whether the primary Bloom key is greater than the last Bloom key<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        // from the file info. For row-column Bloom filters this is not yet<a name="line.383"></a>
+<span class="sourceLineNo">384</span>        // a sufficient condition to return false.<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        boolean keyIsAfterLast = (lastBloomKey != null);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        // hbase:meta does not have blooms. So we need not have special interpretation<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        // of the hbase:meta cells.  We can safely use Bytes.BYTES_RAWCOMPARATOR for ROW Bloom<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        if (keyIsAfterLast) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          if (bloomFilterType == BloomType.ROW) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>            keyIsAfterLast = (Bytes.BYTES_RAWCOMPARATOR.compare(key, lastBloomKey) &gt; 0);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>          } else {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>            keyIsAfterLast = (CellComparator.getInstance().compare(kvKey, lastBloomKeyOnlyKV)) &gt; 0;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>          }<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        }<a name="line.394"></a>
+<span class="sourceLineNo">395</span><a name="line.395"></a>
+<span class="sourceLineNo">396</span>        if (bloomFilterType == BloomType.ROWCOL) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>          // Since a Row Delete is essentially a DeleteFamily applied to all<a name="line.397"></a>
+<span class="sourceLineNo">398</span>          // columns, a file might be skipped if using row+col Bloom filter.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>          // In order to ensure this file is included an additional check is<a name="line.399"></a>
+<span class="sourceLineNo">400</span>          // required looking only for a row bloom.<a name="line.400"></a>
+<span class="sourceLineNo">401</span>          Cell rowBloomKey = PrivateCellUtil.createFirstOnRow(kvKey);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>          // hbase:meta does not have blooms. So we need not have special interpretation<a name="line.402"></a>
+<span class="sourceLineNo">403</span>          // of the hbase:meta cells.  We can safely use Bytes.BYTES_RAWCOMPARATOR for ROW Bloom<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          if (keyIsAfterLast<a name="line.404"></a>
+<span class="sourceLineNo">405</span>              &amp;&amp; (CellComparator.getInstance().compare(rowBloomKey, lastBloomKeyOnlyKV)) &gt; 0) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>            exists = false;<a name="line.406"></a>
+<span class="sourceLineNo">407</span>          } else {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>            exists =<a name="line.408"></a>
+<span class="sourceLineNo">409</span>                bloomFilter.contains(kvKey, bloom, BloomType.ROWCOL) ||<a name="line.409"></a>
+<span class="sourceLineNo">410</span>                bloomFilter.contains(rowBloomKey, bloom, BloomType.ROWCOL);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>          }<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        } else {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>          exists = !keyIsAfterLast<a name="line.413"></a>
+<span class="sourceLineNo">414</span>              &amp;&amp; bloomFilter.contains(key, 0, key.length, bloom);<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>        return exists;<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      }<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    } catch (IOException e) {<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      LOG.error("Error reading bloom filter data -- proceeding without",<a name="line.420"></a>
+<span class="sourceLineNo">421</span>          e);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      setGeneralBloomFilterFaulty();<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    } catch (IllegalArgumentException e) {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      LOG.error("Bad bloom filter data -- proceeding without", e);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      setGeneralBloomFilterFaulty();<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    } finally {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      // Return the bloom block so that its ref count can be decremented.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      reader.returnBlock(bloomBlock);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    return true;<a name="line.430"></a>
+<span class="sourceLineNo">431</span>  }<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">434</span>   * Checks whether the given scan rowkey range overlaps with the current storefile's<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * @param scan the scan specification. Used to determine the rowkey range.<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   * @return true if there is overlap, false otherwise<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   */<a name="line.437"></a>
+<span class="sourceLineNo">438</span>  public boolean passesKeyRangeFilter(Scan scan) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    Optional&lt;Cell&gt; firstKeyKV = this.getFirstKey();<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    Optional&lt;Cell&gt; lastKeyKV = this.getLastKey();<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    if (!firstKeyKV.isPresent() || !lastKeyKV.isPresent()) {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      // the file is empty<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      return false;<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    }<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    if (Bytes.equals(scan.getStartRow(), HConstants.EMPTY_START_ROW) &amp;&amp;<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        Bytes.equals(scan.getStopRow(), HConstants.EMPTY_END_ROW)) {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      return true;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    }<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    byte[] smallestScanRow = scan.isReversed() ? scan.getStopRow() : scan.getStartRow();<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    byte[] largestScanRow = scan.isReversed() ? scan.getStartRow() : scan.getStopRow();<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    boolean nonOverLapping = (getComparator()<a name="line.451"></a>
+<span class="sourceLineNo">452</span>        .compareRows(firstKeyKV.get(), largestScanRow, 0, largestScanRow.length) &gt; 0 &amp;&amp;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        !Bytes.equals(scan.isReversed() ? scan.getStartRow() : scan.getStopRow(),<a name="line.453"></a>
+<span class="sourceLineNo">454</span>          HConstants.EMPTY_END_ROW)) ||<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        getComparator().compareRows(lastKeyKV.get(), smallestScanRow, 0,<a name="line.455"></a>
+<span class="sourceLineNo">456</span>          smallestScanRow.length) &lt; 0;<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    return !nonOverLapping;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
+<span class="sourceLineNo">459</span><a name="line.459"></a>
+<span class="sourceLineNo">460</span>  public Map&lt;byte[], byte[]&gt; loadFileInfo() throws IOException {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    Map&lt;byte [], byte []&gt; fi = reader.loadFileInfo();<a name="line.461"></a

<TRUNCATED>

[15/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html
index e074a8c..8cc5add 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html
@@ -722,172 +722,172 @@
 <span class="sourceLineNo">714</span>      "hbase.regionserver.kerberos.principal", host);<a name="line.714"></a>
 <span class="sourceLineNo">715</span>  }<a name="line.715"></a>
 <span class="sourceLineNo">716</span><a name="line.716"></a>
-<span class="sourceLineNo">717</span>  protected void waitForMasterActive() {<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
-<span class="sourceLineNo">719</span><a name="line.719"></a>
-<span class="sourceLineNo">720</span>  protected String getProcessName() {<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    return REGIONSERVER;<a name="line.721"></a>
-<span class="sourceLineNo">722</span>  }<a name="line.722"></a>
+<span class="sourceLineNo">717</span><a name="line.717"></a>
+<span class="sourceLineNo">718</span>  /**<a name="line.718"></a>
+<span class="sourceLineNo">719</span>   * Wait for an active Master.<a name="line.719"></a>
+<span class="sourceLineNo">720</span>   * See override in Master superclass for how it is used.<a name="line.720"></a>
+<span class="sourceLineNo">721</span>   */<a name="line.721"></a>
+<span class="sourceLineNo">722</span>  protected void waitForMasterActive() {}<a name="line.722"></a>
 <span class="sourceLineNo">723</span><a name="line.723"></a>
-<span class="sourceLineNo">724</span>  protected boolean canCreateBaseZNode() {<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    return this.masterless;<a name="line.725"></a>
+<span class="sourceLineNo">724</span>  protected String getProcessName() {<a name="line.724"></a>
+<span class="sourceLineNo">725</span>    return REGIONSERVER;<a name="line.725"></a>
 <span class="sourceLineNo">726</span>  }<a name="line.726"></a>
 <span class="sourceLineNo">727</span><a name="line.727"></a>
-<span class="sourceLineNo">728</span>  protected boolean canUpdateTableDescriptor() {<a name="line.728"></a>
-<span class="sourceLineNo">729</span>    return false;<a name="line.729"></a>
+<span class="sourceLineNo">728</span>  protected boolean canCreateBaseZNode() {<a name="line.728"></a>
+<span class="sourceLineNo">729</span>    return this.masterless;<a name="line.729"></a>
 <span class="sourceLineNo">730</span>  }<a name="line.730"></a>
 <span class="sourceLineNo">731</span><a name="line.731"></a>
-<span class="sourceLineNo">732</span>  protected RSRpcServices createRpcServices() throws IOException {<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    return new RSRpcServices(this);<a name="line.733"></a>
+<span class="sourceLineNo">732</span>  protected boolean canUpdateTableDescriptor() {<a name="line.732"></a>
+<span class="sourceLineNo">733</span>    return false;<a name="line.733"></a>
 <span class="sourceLineNo">734</span>  }<a name="line.734"></a>
 <span class="sourceLineNo">735</span><a name="line.735"></a>
-<span class="sourceLineNo">736</span>  protected void configureInfoServer() {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    infoServer.addServlet("rs-status", "/rs-status", RSStatusServlet.class);<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    infoServer.setAttribute(REGIONSERVER, this);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>  }<a name="line.739"></a>
-<span class="sourceLineNo">740</span><a name="line.740"></a>
-<span class="sourceLineNo">741</span>  protected Class&lt;? extends HttpServlet&gt; getDumpServlet() {<a name="line.741"></a>
-<span class="sourceLineNo">742</span>    return RSDumpServlet.class;<a name="line.742"></a>
+<span class="sourceLineNo">736</span>  protected RSRpcServices createRpcServices() throws IOException {<a name="line.736"></a>
+<span class="sourceLineNo">737</span>    return new RSRpcServices(this);<a name="line.737"></a>
+<span class="sourceLineNo">738</span>  }<a name="line.738"></a>
+<span class="sourceLineNo">739</span><a name="line.739"></a>
+<span class="sourceLineNo">740</span>  protected void configureInfoServer() {<a name="line.740"></a>
+<span class="sourceLineNo">741</span>    infoServer.addServlet("rs-status", "/rs-status", RSStatusServlet.class);<a name="line.741"></a>
+<span class="sourceLineNo">742</span>    infoServer.setAttribute(REGIONSERVER, this);<a name="line.742"></a>
 <span class="sourceLineNo">743</span>  }<a name="line.743"></a>
 <span class="sourceLineNo">744</span><a name="line.744"></a>
-<span class="sourceLineNo">745</span>  @Override<a name="line.745"></a>
-<span class="sourceLineNo">746</span>  public boolean registerService(com.google.protobuf.Service instance) {<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    /*<a name="line.747"></a>
-<span class="sourceLineNo">748</span>     * No stacking of instances is allowed for a single executorService name<a name="line.748"></a>
-<span class="sourceLineNo">749</span>     */<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    com.google.protobuf.Descriptors.ServiceDescriptor serviceDesc =<a name="line.750"></a>
-<span class="sourceLineNo">751</span>        instance.getDescriptorForType();<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    String serviceName = CoprocessorRpcUtils.getServiceName(serviceDesc);<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    if (coprocessorServiceHandlers.containsKey(serviceName)) {<a name="line.753"></a>
-<span class="sourceLineNo">754</span>      LOG.error("Coprocessor executorService " + serviceName<a name="line.754"></a>
-<span class="sourceLineNo">755</span>          + " already registered, rejecting request from " + instance);<a name="line.755"></a>
-<span class="sourceLineNo">756</span>      return false;<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    }<a name="line.757"></a>
-<span class="sourceLineNo">758</span><a name="line.758"></a>
-<span class="sourceLineNo">759</span>    coprocessorServiceHandlers.put(serviceName, instance);<a name="line.759"></a>
-<span class="sourceLineNo">760</span>    if (LOG.isDebugEnabled()) {<a name="line.760"></a>
-<span class="sourceLineNo">761</span>      LOG.debug("Registered regionserver coprocessor executorService: executorService=" + serviceName);<a name="line.761"></a>
-<span class="sourceLineNo">762</span>    }<a name="line.762"></a>
-<span class="sourceLineNo">763</span>    return true;<a name="line.763"></a>
-<span class="sourceLineNo">764</span>  }<a name="line.764"></a>
-<span class="sourceLineNo">765</span><a name="line.765"></a>
-<span class="sourceLineNo">766</span>  /**<a name="line.766"></a>
-<span class="sourceLineNo">767</span>   * Create a 'smarter' Connection, one that is capable of by-passing RPC if the request is to<a name="line.767"></a>
-<span class="sourceLineNo">768</span>   * the local server; i.e. a short-circuit Connection. Safe to use going to local or remote<a name="line.768"></a>
-<span class="sourceLineNo">769</span>   * server. Create this instance in a method can be intercepted and mocked in tests.<a name="line.769"></a>
-<span class="sourceLineNo">770</span>   * @throws IOException<a name="line.770"></a>
-<span class="sourceLineNo">771</span>   */<a name="line.771"></a>
-<span class="sourceLineNo">772</span>  @VisibleForTesting<a name="line.772"></a>
-<span class="sourceLineNo">773</span>  protected ClusterConnection createClusterConnection() throws IOException {<a name="line.773"></a>
-<span class="sourceLineNo">774</span>    Configuration conf = this.conf;<a name="line.774"></a>
-<span class="sourceLineNo">775</span>    if (conf.get(HConstants.CLIENT_ZOOKEEPER_QUORUM) != null) {<a name="line.775"></a>
-<span class="sourceLineNo">776</span>      // Use server ZK cluster for server-issued connections, so we clone<a name="line.776"></a>
-<span class="sourceLineNo">777</span>      // the conf and unset the client ZK related properties<a name="line.777"></a>
-<span class="sourceLineNo">778</span>      conf = new Configuration(this.conf);<a name="line.778"></a>
-<span class="sourceLineNo">779</span>      conf.unset(HConstants.CLIENT_ZOOKEEPER_QUORUM);<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    }<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    // Create a cluster connection that when appropriate, can short-circuit and go directly to the<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    // local server if the request is to the local server bypassing RPC. Can be used for both local<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    // and remote invocations.<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    return ConnectionUtils.createShortCircuitConnection(conf, null, userProvider.getCurrent(),<a name="line.784"></a>
-<span class="sourceLineNo">785</span>      serverName, rpcServices, rpcServices);<a name="line.785"></a>
-<span class="sourceLineNo">786</span>  }<a name="line.786"></a>
-<span class="sourceLineNo">787</span><a name="line.787"></a>
-<span class="sourceLineNo">788</span>  /**<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * Run test on configured codecs to make sure supporting libs are in place.<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   * @param c<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   * @throws IOException<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   */<a name="line.792"></a>
-<span class="sourceLineNo">793</span>  private static void checkCodecs(final Configuration c) throws IOException {<a name="line.793"></a>
-<span class="sourceLineNo">794</span>    // check to see if the codec list is available:<a name="line.794"></a>
-<span class="sourceLineNo">795</span>    String [] codecs = c.getStrings("hbase.regionserver.codecs", (String[])null);<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    if (codecs == null) return;<a name="line.796"></a>
-<span class="sourceLineNo">797</span>    for (String codec : codecs) {<a name="line.797"></a>
-<span class="sourceLineNo">798</span>      if (!CompressionTest.testCompression(codec)) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>        throw new IOException("Compression codec " + codec +<a name="line.799"></a>
-<span class="sourceLineNo">800</span>          " not supported, aborting RS construction");<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      }<a name="line.801"></a>
-<span class="sourceLineNo">802</span>    }<a name="line.802"></a>
-<span class="sourceLineNo">803</span>  }<a name="line.803"></a>
-<span class="sourceLineNo">804</span><a name="line.804"></a>
-<span class="sourceLineNo">805</span>  public String getClusterId() {<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    return this.clusterId;<a name="line.806"></a>
+<span class="sourceLineNo">745</span>  protected Class&lt;? extends HttpServlet&gt; getDumpServlet() {<a name="line.745"></a>
+<span class="sourceLineNo">746</span>    return RSDumpServlet.class;<a name="line.746"></a>
+<span class="sourceLineNo">747</span>  }<a name="line.747"></a>
+<span class="sourceLineNo">748</span><a name="line.748"></a>
+<span class="sourceLineNo">749</span>  @Override<a name="line.749"></a>
+<span class="sourceLineNo">750</span>  public boolean registerService(com.google.protobuf.Service instance) {<a name="line.750"></a>
+<span class="sourceLineNo">751</span>    /*<a name="line.751"></a>
+<span class="sourceLineNo">752</span>     * No stacking of instances is allowed for a single executorService name<a name="line.752"></a>
+<span class="sourceLineNo">753</span>     */<a name="line.753"></a>
+<span class="sourceLineNo">754</span>    com.google.protobuf.Descriptors.ServiceDescriptor serviceDesc =<a name="line.754"></a>
+<span class="sourceLineNo">755</span>        instance.getDescriptorForType();<a name="line.755"></a>
+<span class="sourceLineNo">756</span>    String serviceName = CoprocessorRpcUtils.getServiceName(serviceDesc);<a name="line.756"></a>
+<span class="sourceLineNo">757</span>    if (coprocessorServiceHandlers.containsKey(serviceName)) {<a name="line.757"></a>
+<span class="sourceLineNo">758</span>      LOG.error("Coprocessor executorService " + serviceName<a name="line.758"></a>
+<span class="sourceLineNo">759</span>          + " already registered, rejecting request from " + instance);<a name="line.759"></a>
+<span class="sourceLineNo">760</span>      return false;<a name="line.760"></a>
+<span class="sourceLineNo">761</span>    }<a name="line.761"></a>
+<span class="sourceLineNo">762</span><a name="line.762"></a>
+<span class="sourceLineNo">763</span>    coprocessorServiceHandlers.put(serviceName, instance);<a name="line.763"></a>
+<span class="sourceLineNo">764</span>    if (LOG.isDebugEnabled()) {<a name="line.764"></a>
+<span class="sourceLineNo">765</span>      LOG.debug("Registered regionserver coprocessor executorService: executorService=" + serviceName);<a name="line.765"></a>
+<span class="sourceLineNo">766</span>    }<a name="line.766"></a>
+<span class="sourceLineNo">767</span>    return true;<a name="line.767"></a>
+<span class="sourceLineNo">768</span>  }<a name="line.768"></a>
+<span class="sourceLineNo">769</span><a name="line.769"></a>
+<span class="sourceLineNo">770</span>  /**<a name="line.770"></a>
+<span class="sourceLineNo">771</span>   * Create a 'smarter' Connection, one that is capable of by-passing RPC if the request is to<a name="line.771"></a>
+<span class="sourceLineNo">772</span>   * the local server; i.e. a short-circuit Connection. Safe to use going to local or remote<a name="line.772"></a>
+<span class="sourceLineNo">773</span>   * server. Create this instance in a method can be intercepted and mocked in tests.<a name="line.773"></a>
+<span class="sourceLineNo">774</span>   * @throws IOException<a name="line.774"></a>
+<span class="sourceLineNo">775</span>   */<a name="line.775"></a>
+<span class="sourceLineNo">776</span>  @VisibleForTesting<a name="line.776"></a>
+<span class="sourceLineNo">777</span>  protected ClusterConnection createClusterConnection() throws IOException {<a name="line.777"></a>
+<span class="sourceLineNo">778</span>    Configuration conf = this.conf;<a name="line.778"></a>
+<span class="sourceLineNo">779</span>    if (conf.get(HConstants.CLIENT_ZOOKEEPER_QUORUM) != null) {<a name="line.779"></a>
+<span class="sourceLineNo">780</span>      // Use server ZK cluster for server-issued connections, so we clone<a name="line.780"></a>
+<span class="sourceLineNo">781</span>      // the conf and unset the client ZK related properties<a name="line.781"></a>
+<span class="sourceLineNo">782</span>      conf = new Configuration(this.conf);<a name="line.782"></a>
+<span class="sourceLineNo">783</span>      conf.unset(HConstants.CLIENT_ZOOKEEPER_QUORUM);<a name="line.783"></a>
+<span class="sourceLineNo">784</span>    }<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    // Create a cluster connection that when appropriate, can short-circuit and go directly to the<a name="line.785"></a>
+<span class="sourceLineNo">786</span>    // local server if the request is to the local server bypassing RPC. Can be used for both local<a name="line.786"></a>
+<span class="sourceLineNo">787</span>    // and remote invocations.<a name="line.787"></a>
+<span class="sourceLineNo">788</span>    return ConnectionUtils.createShortCircuitConnection(conf, null, userProvider.getCurrent(),<a name="line.788"></a>
+<span class="sourceLineNo">789</span>      serverName, rpcServices, rpcServices);<a name="line.789"></a>
+<span class="sourceLineNo">790</span>  }<a name="line.790"></a>
+<span class="sourceLineNo">791</span><a name="line.791"></a>
+<span class="sourceLineNo">792</span>  /**<a name="line.792"></a>
+<span class="sourceLineNo">793</span>   * Run test on configured codecs to make sure supporting libs are in place.<a name="line.793"></a>
+<span class="sourceLineNo">794</span>   * @param c<a name="line.794"></a>
+<span class="sourceLineNo">795</span>   * @throws IOException<a name="line.795"></a>
+<span class="sourceLineNo">796</span>   */<a name="line.796"></a>
+<span class="sourceLineNo">797</span>  private static void checkCodecs(final Configuration c) throws IOException {<a name="line.797"></a>
+<span class="sourceLineNo">798</span>    // check to see if the codec list is available:<a name="line.798"></a>
+<span class="sourceLineNo">799</span>    String [] codecs = c.getStrings("hbase.regionserver.codecs", (String[])null);<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    if (codecs == null) return;<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    for (String codec : codecs) {<a name="line.801"></a>
+<span class="sourceLineNo">802</span>      if (!CompressionTest.testCompression(codec)) {<a name="line.802"></a>
+<span class="sourceLineNo">803</span>        throw new IOException("Compression codec " + codec +<a name="line.803"></a>
+<span class="sourceLineNo">804</span>          " not supported, aborting RS construction");<a name="line.804"></a>
+<span class="sourceLineNo">805</span>      }<a name="line.805"></a>
+<span class="sourceLineNo">806</span>    }<a name="line.806"></a>
 <span class="sourceLineNo">807</span>  }<a name="line.807"></a>
 <span class="sourceLineNo">808</span><a name="line.808"></a>
-<span class="sourceLineNo">809</span>  /**<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * Setup our cluster connection if not already initialized.<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   * @throws IOException<a name="line.811"></a>
-<span class="sourceLineNo">812</span>   */<a name="line.812"></a>
-<span class="sourceLineNo">813</span>  protected synchronized void setupClusterConnection() throws IOException {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    if (clusterConnection == null) {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>      clusterConnection = createClusterConnection();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      metaTableLocator = new MetaTableLocator();<a name="line.816"></a>
-<span class="sourceLineNo">817</span>    }<a name="line.817"></a>
-<span class="sourceLineNo">818</span>  }<a name="line.818"></a>
-<span class="sourceLineNo">819</span><a name="line.819"></a>
-<span class="sourceLineNo">820</span>  /**<a name="line.820"></a>
-<span class="sourceLineNo">821</span>   * All initialization needed before we go register with Master.&lt;br&gt;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>   * Do bare minimum. Do bulk of initializations AFTER we've connected to the Master.&lt;br&gt;<a name="line.822"></a>
-<span class="sourceLineNo">823</span>   * In here we just put up the RpcServer, setup Connection, and ZooKeeper.<a name="line.823"></a>
-<span class="sourceLineNo">824</span>   */<a name="line.824"></a>
-<span class="sourceLineNo">825</span>  private void preRegistrationInitialization() {<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    try {<a name="line.826"></a>
-<span class="sourceLineNo">827</span>      initializeZooKeeper();<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      setupClusterConnection();<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      // Setup RPC client for master communication<a name="line.829"></a>
-<span class="sourceLineNo">830</span>      this.rpcClient = RpcClientFactory.createClient(conf, clusterId, new InetSocketAddress(<a name="line.830"></a>
-<span class="sourceLineNo">831</span>          this.rpcServices.isa.getAddress(), 0), clusterConnection.getConnectionMetrics());<a name="line.831"></a>
-<span class="sourceLineNo">832</span>    } catch (Throwable t) {<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      // Call stop if error or process will stick around for ever since server<a name="line.833"></a>
-<span class="sourceLineNo">834</span>      // puts up non-daemon threads.<a name="line.834"></a>
-<span class="sourceLineNo">835</span>      this.rpcServices.stop();<a name="line.835"></a>
-<span class="sourceLineNo">836</span>      abort("Initialization of RS failed.  Hence aborting RS.", t);<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    }<a name="line.837"></a>
-<span class="sourceLineNo">838</span>  }<a name="line.838"></a>
-<span class="sourceLineNo">839</span><a name="line.839"></a>
-<span class="sourceLineNo">840</span>  /**<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * Bring up connection to zk ensemble and then wait until a master for this cluster and then after<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   * that, wait until cluster 'up' flag has been set. This is the order in which master does things.<a name="line.842"></a>
-<span class="sourceLineNo">843</span>   * &lt;p&gt;<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   * Finally open long-living server short-circuit connection.<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   */<a name="line.845"></a>
-<span class="sourceLineNo">846</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE",<a name="line.846"></a>
-<span class="sourceLineNo">847</span>    justification="cluster Id znode read would give us correct response")<a name="line.847"></a>
-<span class="sourceLineNo">848</span>  private void initializeZooKeeper() throws IOException, InterruptedException {<a name="line.848"></a>
-<span class="sourceLineNo">849</span>    // Nothing to do in here if no Master in the mix.<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    if (this.masterless) {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      return;<a name="line.851"></a>
-<span class="sourceLineNo">852</span>    }<a name="line.852"></a>
-<span class="sourceLineNo">853</span><a name="line.853"></a>
-<span class="sourceLineNo">854</span>    // Create the master address tracker, register with zk, and start it.  Then<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    // block until a master is available.  No point in starting up if no master<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    // running.<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    blockAndCheckIfStopped(this.masterAddressTracker);<a name="line.857"></a>
-<span class="sourceLineNo">858</span><a name="line.858"></a>
-<span class="sourceLineNo">859</span>    // Wait on cluster being up.  Master will set this flag up in zookeeper<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    // when ready.<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    blockAndCheckIfStopped(this.clusterStatusTracker);<a name="line.861"></a>
+<span class="sourceLineNo">809</span>  public String getClusterId() {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>    return this.clusterId;<a name="line.810"></a>
+<span class="sourceLineNo">811</span>  }<a name="line.811"></a>
+<span class="sourceLineNo">812</span><a name="line.812"></a>
+<span class="sourceLineNo">813</span>  /**<a name="line.813"></a>
+<span class="sourceLineNo">814</span>   * Setup our cluster connection if not already initialized.<a name="line.814"></a>
+<span class="sourceLineNo">815</span>   * @throws IOException<a name="line.815"></a>
+<span class="sourceLineNo">816</span>   */<a name="line.816"></a>
+<span class="sourceLineNo">817</span>  protected synchronized void setupClusterConnection() throws IOException {<a name="line.817"></a>
+<span class="sourceLineNo">818</span>    if (clusterConnection == null) {<a name="line.818"></a>
+<span class="sourceLineNo">819</span>      clusterConnection = createClusterConnection();<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      metaTableLocator = new MetaTableLocator();<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    }<a name="line.821"></a>
+<span class="sourceLineNo">822</span>  }<a name="line.822"></a>
+<span class="sourceLineNo">823</span><a name="line.823"></a>
+<span class="sourceLineNo">824</span>  /**<a name="line.824"></a>
+<span class="sourceLineNo">825</span>   * All initialization needed before we go register with Master.&lt;br&gt;<a name="line.825"></a>
+<span class="sourceLineNo">826</span>   * Do bare minimum. Do bulk of initializations AFTER we've connected to the Master.&lt;br&gt;<a name="line.826"></a>
+<span class="sourceLineNo">827</span>   * In here we just put up the RpcServer, setup Connection, and ZooKeeper.<a name="line.827"></a>
+<span class="sourceLineNo">828</span>   */<a name="line.828"></a>
+<span class="sourceLineNo">829</span>  private void preRegistrationInitialization() {<a name="line.829"></a>
+<span class="sourceLineNo">830</span>    try {<a name="line.830"></a>
+<span class="sourceLineNo">831</span>      initializeZooKeeper();<a name="line.831"></a>
+<span class="sourceLineNo">832</span>      setupClusterConnection();<a name="line.832"></a>
+<span class="sourceLineNo">833</span>      // Setup RPC client for master communication<a name="line.833"></a>
+<span class="sourceLineNo">834</span>      this.rpcClient = RpcClientFactory.createClient(conf, clusterId, new InetSocketAddress(<a name="line.834"></a>
+<span class="sourceLineNo">835</span>          this.rpcServices.isa.getAddress(), 0), clusterConnection.getConnectionMetrics());<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    } catch (Throwable t) {<a name="line.836"></a>
+<span class="sourceLineNo">837</span>      // Call stop if error or process will stick around for ever since server<a name="line.837"></a>
+<span class="sourceLineNo">838</span>      // puts up non-daemon threads.<a name="line.838"></a>
+<span class="sourceLineNo">839</span>      this.rpcServices.stop();<a name="line.839"></a>
+<span class="sourceLineNo">840</span>      abort("Initialization of RS failed.  Hence aborting RS.", t);<a name="line.840"></a>
+<span class="sourceLineNo">841</span>    }<a name="line.841"></a>
+<span class="sourceLineNo">842</span>  }<a name="line.842"></a>
+<span class="sourceLineNo">843</span><a name="line.843"></a>
+<span class="sourceLineNo">844</span>  /**<a name="line.844"></a>
+<span class="sourceLineNo">845</span>   * Bring up connection to zk ensemble and then wait until a master for this cluster and then after<a name="line.845"></a>
+<span class="sourceLineNo">846</span>   * that, wait until cluster 'up' flag has been set. This is the order in which master does things.<a name="line.846"></a>
+<span class="sourceLineNo">847</span>   * &lt;p&gt;<a name="line.847"></a>
+<span class="sourceLineNo">848</span>   * Finally open long-living server short-circuit connection.<a name="line.848"></a>
+<span class="sourceLineNo">849</span>   */<a name="line.849"></a>
+<span class="sourceLineNo">850</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE",<a name="line.850"></a>
+<span class="sourceLineNo">851</span>    justification="cluster Id znode read would give us correct response")<a name="line.851"></a>
+<span class="sourceLineNo">852</span>  private void initializeZooKeeper() throws IOException, InterruptedException {<a name="line.852"></a>
+<span class="sourceLineNo">853</span>    // Nothing to do in here if no Master in the mix.<a name="line.853"></a>
+<span class="sourceLineNo">854</span>    if (this.masterless) {<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      return;<a name="line.855"></a>
+<span class="sourceLineNo">856</span>    }<a name="line.856"></a>
+<span class="sourceLineNo">857</span><a name="line.857"></a>
+<span class="sourceLineNo">858</span>    // Create the master address tracker, register with zk, and start it.  Then<a name="line.858"></a>
+<span class="sourceLineNo">859</span>    // block until a master is available.  No point in starting up if no master<a name="line.859"></a>
+<span class="sourceLineNo">860</span>    // running.<a name="line.860"></a>
+<span class="sourceLineNo">861</span>    blockAndCheckIfStopped(this.masterAddressTracker);<a name="line.861"></a>
 <span class="sourceLineNo">862</span><a name="line.862"></a>
-<span class="sourceLineNo">863</span>    // If we are HMaster then the cluster id should have already been set.<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    if (clusterId == null) {<a name="line.864"></a>
-<span class="sourceLineNo">865</span>      // Retrieve clusterId<a name="line.865"></a>
-<span class="sourceLineNo">866</span>      // Since cluster status is now up<a name="line.866"></a>
-<span class="sourceLineNo">867</span>      // ID should have already been set by HMaster<a name="line.867"></a>
-<span class="sourceLineNo">868</span>      try {<a name="line.868"></a>
-<span class="sourceLineNo">869</span>        clusterId = ZKClusterId.readClusterIdZNode(this.zooKeeper);<a name="line.869"></a>
-<span class="sourceLineNo">870</span>        if (clusterId == null) {<a name="line.870"></a>
-<span class="sourceLineNo">871</span>          this.abort("Cluster ID has not been set");<a name="line.871"></a>
-<span class="sourceLineNo">872</span>        }<a name="line.872"></a>
-<span class="sourceLineNo">873</span>        LOG.info("ClusterId : " + clusterId);<a name="line.873"></a>
-<span class="sourceLineNo">874</span>      } catch (KeeperException e) {<a name="line.874"></a>
-<span class="sourceLineNo">875</span>        this.abort("Failed to retrieve Cluster ID", e);<a name="line.875"></a>
-<span class="sourceLineNo">876</span>      }<a name="line.876"></a>
-<span class="sourceLineNo">877</span>    }<a name="line.877"></a>
-<span class="sourceLineNo">878</span><a name="line.878"></a>
-<span class="sourceLineNo">879</span>    // In case colocated master, wait here till it's active.<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    // So backup masters won't start as regionservers.<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    // This is to avoid showing backup masters as regionservers<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    // in master web UI, or assigning any region to them.<a name="line.882"></a>
+<span class="sourceLineNo">863</span>    // Wait on cluster being up.  Master will set this flag up in zookeeper<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    // when ready.<a name="line.864"></a>
+<span class="sourceLineNo">865</span>    blockAndCheckIfStopped(this.clusterStatusTracker);<a name="line.865"></a>
+<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">867</span>    // If we are HMaster then the cluster id should have already been set.<a name="line.867"></a>
+<span class="sourceLineNo">868</span>    if (clusterId == null) {<a name="line.868"></a>
+<span class="sourceLineNo">869</span>      // Retrieve clusterId<a name="line.869"></a>
+<span class="sourceLineNo">870</span>      // Since cluster status is now up<a name="line.870"></a>
+<span class="sourceLineNo">871</span>      // ID should have already been set by HMaster<a name="line.871"></a>
+<span class="sourceLineNo">872</span>      try {<a name="line.872"></a>
+<span class="sourceLineNo">873</span>        clusterId = ZKClusterId.readClusterIdZNode(this.zooKeeper);<a name="line.873"></a>
+<span class="sourceLineNo">874</span>        if (clusterId == null) {<a name="line.874"></a>
+<span class="sourceLineNo">875</span>          this.abort("Cluster ID has not been set");<a name="line.875"></a>
+<span class="sourceLineNo">876</span>        }<a name="line.876"></a>
+<span class="sourceLineNo">877</span>        LOG.info("ClusterId : " + clusterId);<a name="line.877"></a>
+<span class="sourceLineNo">878</span>      } catch (KeeperException e) {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>        this.abort("Failed to retrieve Cluster ID", e);<a name="line.879"></a>
+<span class="sourceLineNo">880</span>      }<a name="line.880"></a>
+<span class="sourceLineNo">881</span>    }<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
 <span class="sourceLineNo">883</span>    waitForMasterActive();<a name="line.883"></a>
 <span class="sourceLineNo">884</span>    if (isStopped() || isAborted()) {<a name="line.884"></a>
 <span class="sourceLineNo">885</span>      return; // No need for further initialization<a name="line.885"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
index 34b8b52..3f9d8d2 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
@@ -935,7 +935,7 @@
 <span class="sourceLineNo">927</span>          storeEngine.getStoreFileManager().clearCompactedFiles();<a name="line.927"></a>
 <span class="sourceLineNo">928</span>      // clear the compacted files<a name="line.928"></a>
 <span class="sourceLineNo">929</span>      if (CollectionUtils.isNotEmpty(compactedfiles)) {<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        removeCompactedfiles(compactedfiles);<a name="line.930"></a>
+<span class="sourceLineNo">930</span>        removeCompactedfiles(compactedfiles, true);<a name="line.930"></a>
 <span class="sourceLineNo">931</span>      }<a name="line.931"></a>
 <span class="sourceLineNo">932</span>      if (!result.isEmpty()) {<a name="line.932"></a>
 <span class="sourceLineNo">933</span>        // initialize the thread pool for closing store files in parallel.<a name="line.933"></a>
@@ -2583,190 +2583,221 @@
 <span class="sourceLineNo">2575</span>   * Closes and archives the compacted files under this store<a name="line.2575"></a>
 <span class="sourceLineNo">2576</span>   */<a name="line.2576"></a>
 <span class="sourceLineNo">2577</span>  public synchronized void closeAndArchiveCompactedFiles() throws IOException {<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>    // ensure other threads do not attempt to archive the same files on close()<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>    archiveLock.lock();<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    try {<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>      lock.readLock().lock();<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>      Collection&lt;HStoreFile&gt; copyCompactedfiles = null;<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>      try {<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>        Collection&lt;HStoreFile&gt; compactedfiles =<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span>            this.getStoreEngine().getStoreFileManager().getCompactedfiles();<a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>        if (CollectionUtils.isNotEmpty(compactedfiles)) {<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>          // Do a copy under read lock<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>          copyCompactedfiles = new ArrayList&lt;&gt;(compactedfiles);<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span>        } else {<a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>          LOG.trace("No compacted files to archive");<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>        }<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>      } finally {<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>        lock.readLock().unlock();<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>      }<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>      if (CollectionUtils.isNotEmpty(copyCompactedfiles)) {<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>        removeCompactedfiles(copyCompactedfiles);<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>      }<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>    } finally {<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>      archiveLock.unlock();<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>    }<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span>  }<a name="line.2601"></a>
-<span class="sourceLineNo">2602</span><a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>  /**<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>   * Archives and removes the compacted files<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span>   * @param compactedfiles The compacted files in this store that are not active in reads<a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>   */<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>  private void removeCompactedfiles(Collection&lt;HStoreFile&gt; compactedfiles)<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>      throws IOException {<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>    final List&lt;HStoreFile&gt; filesToRemove = new ArrayList&lt;&gt;(compactedfiles.size());<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>    final List&lt;Long&gt; storeFileSizes = new ArrayList&lt;&gt;(compactedfiles.size());<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>    for (final HStoreFile file : compactedfiles) {<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>      synchronized (file) {<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>        try {<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>          StoreFileReader r = file.getReader();<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>          if (r == null) {<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>            LOG.debug("The file {} was closed but still not archived", file);<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>            // HACK: Temporarily re-open the reader so we can get the size of the file. Ideally,<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>            // we should know the size of an HStoreFile without having to ask the HStoreFileReader<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>            // for that.<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>            long length = getStoreFileSize(file);<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>            filesToRemove.add(file);<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>            storeFileSizes.add(length);<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>            continue;<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>          }<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>          if (file.isCompactedAway() &amp;&amp; !file.isReferencedInReads()) {<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span>            // Even if deleting fails we need not bother as any new scanners won't be<a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>            // able to use the compacted file as the status is already compactedAway<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>            LOG.trace("Closing and archiving the file {}", file);<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span>            // Copy the file size before closing the reader<a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>            final long length = r.length();<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>            r.close(true);<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>            // Just close and return<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>            filesToRemove.add(file);<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>            // Only add the length if we successfully added the file to `filesToRemove`<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>            storeFileSizes.add(length);<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>          } else {<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>            LOG.info("Can't archive compacted file " + file.getPath()<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>                + " because of either isCompactedAway = " + file.isCompactedAway()<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>                + " or file has reference, isReferencedInReads = " + file.isReferencedInReads()<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>                + ", skipping for now.");<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>          }<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>        } catch (Exception e) {<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>          LOG.error("Exception while trying to close the compacted store file {}",<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>            file.getPath(), e);<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>        }<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>      }<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>    }<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>    if (this.isPrimaryReplicaStore()) {<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>      // Only the primary region is allowed to move the file to archive.<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>      // The secondary region does not move the files to archive. Any active reads from<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>      // the secondary region will still work because the file as such has active readers on it.<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span>      if (!filesToRemove.isEmpty()) {<a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>        LOG.debug("Moving the files {} to archive", filesToRemove);<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>        // Only if this is successful it has to be removed<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span>        try {<a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>          this.fs.removeStoreFiles(this.getColumnFamilyDescriptor().getNameAsString(), filesToRemove);<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>        } catch (FailedArchiveException fae) {<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>          // Even if archiving some files failed, we still need to clear out any of the<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>          // files which were successfully archived.  Otherwise we will receive a<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span>          // FileNotFoundException when we attempt to re-archive them in the next go around.<a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>          Collection&lt;Path&gt; failedFiles = fae.getFailedFiles();<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>          Iterator&lt;HStoreFile&gt; iter = filesToRemove.iterator();<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>          Iterator&lt;Long&gt; sizeIter = storeFileSizes.iterator();<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>          while (iter.hasNext()) {<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>            sizeIter.next();<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span>            if (failedFiles.contains(iter.next().getPath())) {<a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>              iter.remove();<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>              sizeIter.remove();<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>            }<a name="line.2669"></a>
+<span class="sourceLineNo">2578</span>    closeAndArchiveCompactedFiles(false);<a name="line.2578"></a>
+<span class="sourceLineNo">2579</span>  }<a name="line.2579"></a>
+<span class="sourceLineNo">2580</span><a name="line.2580"></a>
+<span class="sourceLineNo">2581</span>  @VisibleForTesting<a name="line.2581"></a>
+<span class="sourceLineNo">2582</span>  public synchronized void closeAndArchiveCompactedFiles(boolean storeClosing) throws IOException {<a name="line.2582"></a>
+<span class="sourceLineNo">2583</span>    // ensure other threads do not attempt to archive the same files on close()<a name="line.2583"></a>
+<span class="sourceLineNo">2584</span>    archiveLock.lock();<a name="line.2584"></a>
+<span class="sourceLineNo">2585</span>    try {<a name="line.2585"></a>
+<span class="sourceLineNo">2586</span>      lock.readLock().lock();<a name="line.2586"></a>
+<span class="sourceLineNo">2587</span>      Collection&lt;HStoreFile&gt; copyCompactedfiles = null;<a name="line.2587"></a>
+<span class="sourceLineNo">2588</span>      try {<a name="line.2588"></a>
+<span class="sourceLineNo">2589</span>        Collection&lt;HStoreFile&gt; compactedfiles =<a name="line.2589"></a>
+<span class="sourceLineNo">2590</span>            this.getStoreEngine().getStoreFileManager().getCompactedfiles();<a name="line.2590"></a>
+<span class="sourceLineNo">2591</span>        if (CollectionUtils.isNotEmpty(compactedfiles)) {<a name="line.2591"></a>
+<span class="sourceLineNo">2592</span>          // Do a copy under read lock<a name="line.2592"></a>
+<span class="sourceLineNo">2593</span>          copyCompactedfiles = new ArrayList&lt;&gt;(compactedfiles);<a name="line.2593"></a>
+<span class="sourceLineNo">2594</span>        } else {<a name="line.2594"></a>
+<span class="sourceLineNo">2595</span>          LOG.trace("No compacted files to archive");<a name="line.2595"></a>
+<span class="sourceLineNo">2596</span>        }<a name="line.2596"></a>
+<span class="sourceLineNo">2597</span>      } finally {<a name="line.2597"></a>
+<span class="sourceLineNo">2598</span>        lock.readLock().unlock();<a name="line.2598"></a>
+<span class="sourceLineNo">2599</span>      }<a name="line.2599"></a>
+<span class="sourceLineNo">2600</span>      if (CollectionUtils.isNotEmpty(copyCompactedfiles)) {<a name="line.2600"></a>
+<span class="sourceLineNo">2601</span>        removeCompactedfiles(copyCompactedfiles, storeClosing);<a name="line.2601"></a>
+<span class="sourceLineNo">2602</span>      }<a name="line.2602"></a>
+<span class="sourceLineNo">2603</span>    } finally {<a name="line.2603"></a>
+<span class="sourceLineNo">2604</span>      archiveLock.unlock();<a name="line.2604"></a>
+<span class="sourceLineNo">2605</span>    }<a name="line.2605"></a>
+<span class="sourceLineNo">2606</span>  }<a name="line.2606"></a>
+<span class="sourceLineNo">2607</span><a name="line.2607"></a>
+<span class="sourceLineNo">2608</span>  /**<a name="line.2608"></a>
+<span class="sourceLineNo">2609</span>   * Archives and removes the compacted files<a name="line.2609"></a>
+<span class="sourceLineNo">2610</span>   * @param compactedfiles The compacted files in this store that are not active in reads<a name="line.2610"></a>
+<span class="sourceLineNo">2611</span>   */<a name="line.2611"></a>
+<span class="sourceLineNo">2612</span>  private void removeCompactedfiles(Collection&lt;HStoreFile&gt; compactedfiles, boolean storeClosing)<a name="line.2612"></a>
+<span class="sourceLineNo">2613</span>      throws IOException {<a name="line.2613"></a>
+<span class="sourceLineNo">2614</span>    final List&lt;HStoreFile&gt; filesToRemove = new ArrayList&lt;&gt;(compactedfiles.size());<a name="line.2614"></a>
+<span class="sourceLineNo">2615</span>    final List&lt;Long&gt; storeFileSizes = new ArrayList&lt;&gt;(compactedfiles.size());<a name="line.2615"></a>
+<span class="sourceLineNo">2616</span>    for (final HStoreFile file : compactedfiles) {<a name="line.2616"></a>
+<span class="sourceLineNo">2617</span>      synchronized (file) {<a name="line.2617"></a>
+<span class="sourceLineNo">2618</span>        try {<a name="line.2618"></a>
+<span class="sourceLineNo">2619</span>          StoreFileReader r = file.getReader();<a name="line.2619"></a>
+<span class="sourceLineNo">2620</span>          if (r == null) {<a name="line.2620"></a>
+<span class="sourceLineNo">2621</span>            LOG.debug("The file {} was closed but still not archived", file);<a name="line.2621"></a>
+<span class="sourceLineNo">2622</span>            // HACK: Temporarily re-open the reader so we can get the size of the file. Ideally,<a name="line.2622"></a>
+<span class="sourceLineNo">2623</span>            // we should know the size of an HStoreFile without having to ask the HStoreFileReader<a name="line.2623"></a>
+<span class="sourceLineNo">2624</span>            // for that.<a name="line.2624"></a>
+<span class="sourceLineNo">2625</span>            long length = getStoreFileSize(file);<a name="line.2625"></a>
+<span class="sourceLineNo">2626</span>            filesToRemove.add(file);<a name="line.2626"></a>
+<span class="sourceLineNo">2627</span>            storeFileSizes.add(length);<a name="line.2627"></a>
+<span class="sourceLineNo">2628</span>            continue;<a name="line.2628"></a>
+<span class="sourceLineNo">2629</span>          }<a name="line.2629"></a>
+<span class="sourceLineNo">2630</span><a name="line.2630"></a>
+<span class="sourceLineNo">2631</span>          //Compacted files in the list should always be marked compacted away. In the event<a name="line.2631"></a>
+<span class="sourceLineNo">2632</span>          //they're contradicting in order to guarantee data consistency<a name="line.2632"></a>
+<span class="sourceLineNo">2633</span>          //should we choose one and ignore the other?<a name="line.2633"></a>
+<span class="sourceLineNo">2634</span>          if (storeClosing &amp;&amp; !file.isCompactedAway()) {<a name="line.2634"></a>
+<span class="sourceLineNo">2635</span>            String msg =<a name="line.2635"></a>
+<span class="sourceLineNo">2636</span>                "Region closing but StoreFile is in compacted list but not compacted away: " +<a name="line.2636"></a>
+<span class="sourceLineNo">2637</span>                file.getPath().getName();<a name="line.2637"></a>
+<span class="sourceLineNo">2638</span>            throw new IllegalStateException(msg);<a name="line.2638"></a>
+<span class="sourceLineNo">2639</span>          }<a name="line.2639"></a>
+<span class="sourceLineNo">2640</span><a name="line.2640"></a>
+<span class="sourceLineNo">2641</span>          //If store is closing we're ignoring any references to keep things consistent<a name="line.2641"></a>
+<span class="sourceLineNo">2642</span>          //and remove compacted storefiles from the region directory<a name="line.2642"></a>
+<span class="sourceLineNo">2643</span>          if (file.isCompactedAway() &amp;&amp; (!file.isReferencedInReads() || storeClosing)) {<a name="line.2643"></a>
+<span class="sourceLineNo">2644</span>            if (storeClosing &amp;&amp; file.isReferencedInReads()) {<a name="line.2644"></a>
+<span class="sourceLineNo">2645</span>              LOG.debug("Region closing but StoreFile still has references: {}",<a name="line.2645"></a>
+<span class="sourceLineNo">2646</span>                  file.getPath().getName());<a name="line.2646"></a>
+<span class="sourceLineNo">2647</span>            }<a name="line.2647"></a>
+<span class="sourceLineNo">2648</span>            // Even if deleting fails we need not bother as any new scanners won't be<a name="line.2648"></a>
+<span class="sourceLineNo">2649</span>            // able to use the compacted file as the status is already compactedAway<a name="line.2649"></a>
+<span class="sourceLineNo">2650</span>            LOG.trace("Closing and archiving the file {}", file);<a name="line.2650"></a>
+<span class="sourceLineNo">2651</span>            // Copy the file size before closing the reader<a name="line.2651"></a>
+<span class="sourceLineNo">2652</span>            final long length = r.length();<a name="line.2652"></a>
+<span class="sourceLineNo">2653</span>            r.close(true);<a name="line.2653"></a>
+<span class="sourceLineNo">2654</span>            file.closeStreamReaders(true);<a name="line.2654"></a>
+<span class="sourceLineNo">2655</span>            // Just close and return<a name="line.2655"></a>
+<span class="sourceLineNo">2656</span>            filesToRemove.add(file);<a name="line.2656"></a>
+<span class="sourceLineNo">2657</span>            // Only add the length if we successfully added the file to `filesToRemove`<a name="line.2657"></a>
+<span class="sourceLineNo">2658</span>            storeFileSizes.add(length);<a name="line.2658"></a>
+<span class="sourceLineNo">2659</span>          } else {<a name="line.2659"></a>
+<span class="sourceLineNo">2660</span>            LOG.info("Can't archive compacted file " + file.getPath()<a name="line.2660"></a>
+<span class="sourceLineNo">2661</span>                + " because of either isCompactedAway = " + file.isCompactedAway()<a name="line.2661"></a>
+<span class="sourceLineNo">2662</span>                + " or file has reference, isReferencedInReads = " + file.isReferencedInReads()<a name="line.2662"></a>
+<span class="sourceLineNo">2663</span>                + ", skipping for now.");<a name="line.2663"></a>
+<span class="sourceLineNo">2664</span>          }<a name="line.2664"></a>
+<span class="sourceLineNo">2665</span>        } catch (Exception e) {<a name="line.2665"></a>
+<span class="sourceLineNo">2666</span>          String msg = "Exception while trying to close the compacted store file " +<a name="line.2666"></a>
+<span class="sourceLineNo">2667</span>              file.getPath().getName();<a name="line.2667"></a>
+<span class="sourceLineNo">2668</span>          if (storeClosing) {<a name="line.2668"></a>
+<span class="sourceLineNo">2669</span>            msg = "Store is closing. " + msg;<a name="line.2669"></a>
 <span class="sourceLineNo">2670</span>          }<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span>          if (!filesToRemove.isEmpty()) {<a name="line.2671"></a>
-<span class="sourceLineNo">2672</span>            clearCompactedfiles(filesToRemove);<a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>          }<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span>          throw fae;<a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>        }<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>      }<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span>    }<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span>    if (!filesToRemove.isEmpty()) {<a name="line.2678"></a>
-<span class="sourceLineNo">2679</span>      // Clear the compactedfiles from the store file manager<a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>      clearCompactedfiles(filesToRemove);<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span>      // Try to send report of this archival to the Master for updating quota usage faster<a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>      reportArchivedFilesForQuota(filesToRemove, storeFileSizes);<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>    }<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span>  }<a name="line.2684"></a>
-<span class="sourceLineNo">2685</span><a name="line.2685"></a>
-<span class="sourceLineNo">2686</span>  /**<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span>   * Computes the length of a store file without succumbing to any errors along the way. If an<a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>   * error is encountered, the implementation returns {@code 0} instead of the actual size.<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>   *<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span>   * @param file The file to compute the size of.<a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>   * @return The size in bytes of the provided {@code file}.<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>   */<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span>  long getStoreFileSize(HStoreFile file) {<a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    long length = 0;<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>    try {<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span>      file.initReader();<a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>      length = file.getReader().length();<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>    } catch (IOException e) {<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>      LOG.trace("Failed to open reader when trying to compute store file size, ignoring", e);<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>    } finally {<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>      try {<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span>        file.closeStoreFile(<a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>            file.getCacheConf() != null ? file.getCacheConf().shouldEvictOnClose() : true);<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>      } catch (IOException e) {<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span>        LOG.trace("Failed to close reader after computing store file size, ignoring", e);<a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>      }<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>    }<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span>    return length;<a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>  }<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span><a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>  public Long preFlushSeqIDEstimation() {<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>    return memstore.preFlushSeqIDEstimation();<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>  }<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span><a name="line.2714"></a>
-<span class="sourceLineNo">2715</span>  @Override<a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>  public boolean isSloppyMemStore() {<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>    return this.memstore.isSloppy();<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>  }<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span><a name="line.2719"></a>
-<span class="sourceLineNo">2720</span>  private void clearCompactedfiles(List&lt;HStoreFile&gt; filesToRemove) throws IOException {<a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>    LOG.trace("Clearing the compacted file {} from this store", filesToRemove);<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>    try {<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>      lock.writeLock().lock();<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>      this.getStoreEngine().getStoreFileManager().removeCompactedFiles(filesToRemove);<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>    } finally {<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span>      lock.writeLock().unlock();<a name="line.2726"></a>
-<span class="sourceLineNo">2727</span>    }<a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>  }<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span><a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>  void reportArchivedFilesForQuota(List&lt;? extends StoreFile&gt; archivedFiles, List&lt;Long&gt; fileSizes) {<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span>    // Sanity check from the caller<a name="line.2731"></a>
-<span class="sourceLineNo">2732</span>    if (archivedFiles.size() != fileSizes.size()) {<a name="line.2732"></a>
-<span class="sourceLineNo">2733</span>      throw new RuntimeException("Coding error: should never see lists of varying size");<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span>    }<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span>    RegionServerServices rss = this.region.getRegionServerServices();<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span>    if (rss == null) {<a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>      return;<a name="line.2737"></a>
+<span class="sourceLineNo">2671</span>          LOG.error(msg, e);<a name="line.2671"></a>
+<span class="sourceLineNo">2672</span>          //if we get an exception let caller know so it can abort the server<a name="line.2672"></a>
+<span class="sourceLineNo">2673</span>          if (storeClosing) {<a name="line.2673"></a>
+<span class="sourceLineNo">2674</span>            throw new IOException(msg, e);<a name="line.2674"></a>
+<span class="sourceLineNo">2675</span>          }<a name="line.2675"></a>
+<span class="sourceLineNo">2676</span>        }<a name="line.2676"></a>
+<span class="sourceLineNo">2677</span>      }<a name="line.2677"></a>
+<span class="sourceLineNo">2678</span>    }<a name="line.2678"></a>
+<span class="sourceLineNo">2679</span>    if (this.isPrimaryReplicaStore()) {<a name="line.2679"></a>
+<span class="sourceLineNo">2680</span>      // Only the primary region is allowed to move the file to archive.<a name="line.2680"></a>
+<span class="sourceLineNo">2681</span>      // The secondary region does not move the files to archive. Any active reads from<a name="line.2681"></a>
+<span class="sourceLineNo">2682</span>      // the secondary region will still work because the file as such has active readers on it.<a name="line.2682"></a>
+<span class="sourceLineNo">2683</span>      if (!filesToRemove.isEmpty()) {<a name="line.2683"></a>
+<span class="sourceLineNo">2684</span>        LOG.debug("Moving the files {} to archive", filesToRemove);<a name="line.2684"></a>
+<span class="sourceLineNo">2685</span>        // Only if this is successful it has to be removed<a name="line.2685"></a>
+<span class="sourceLineNo">2686</span>        try {<a name="line.2686"></a>
+<span class="sourceLineNo">2687</span>          this.fs.removeStoreFiles(this.getColumnFamilyDescriptor().getNameAsString(), filesToRemove);<a name="line.2687"></a>
+<span class="sourceLineNo">2688</span>        } catch (FailedArchiveException fae) {<a name="line.2688"></a>
+<span class="sourceLineNo">2689</span>          // Even if archiving some files failed, we still need to clear out any of the<a name="line.2689"></a>
+<span class="sourceLineNo">2690</span>          // files which were successfully archived.  Otherwise we will receive a<a name="line.2690"></a>
+<span class="sourceLineNo">2691</span>          // FileNotFoundException when we attempt to re-archive them in the next go around.<a name="line.2691"></a>
+<span class="sourceLineNo">2692</span>          Collection&lt;Path&gt; failedFiles = fae.getFailedFiles();<a name="line.2692"></a>
+<span class="sourceLineNo">2693</span>          Iterator&lt;HStoreFile&gt; iter = filesToRemove.iterator();<a name="line.2693"></a>
+<span class="sourceLineNo">2694</span>          Iterator&lt;Long&gt; sizeIter = storeFileSizes.iterator();<a name="line.2694"></a>
+<span class="sourceLineNo">2695</span>          while (iter.hasNext()) {<a name="line.2695"></a>
+<span class="sourceLineNo">2696</span>            sizeIter.next();<a name="line.2696"></a>
+<span class="sourceLineNo">2697</span>            if (failedFiles.contains(iter.next().getPath())) {<a name="line.2697"></a>
+<span class="sourceLineNo">2698</span>              iter.remove();<a name="line.2698"></a>
+<span class="sourceLineNo">2699</span>              sizeIter.remove();<a name="line.2699"></a>
+<span class="sourceLineNo">2700</span>            }<a name="line.2700"></a>
+<span class="sourceLineNo">2701</span>          }<a name="line.2701"></a>
+<span class="sourceLineNo">2702</span>          if (!filesToRemove.isEmpty()) {<a name="line.2702"></a>
+<span class="sourceLineNo">2703</span>            clearCompactedfiles(filesToRemove);<a name="line.2703"></a>
+<span class="sourceLineNo">2704</span>          }<a name="line.2704"></a>
+<span class="sourceLineNo">2705</span>          throw fae;<a name="line.2705"></a>
+<span class="sourceLineNo">2706</span>        }<a name="line.2706"></a>
+<span class="sourceLineNo">2707</span>      }<a name="line.2707"></a>
+<span class="sourceLineNo">2708</span>    }<a name="line.2708"></a>
+<span class="sourceLineNo">2709</span>    if (!filesToRemove.isEmpty()) {<a name="line.2709"></a>
+<span class="sourceLineNo">2710</span>      // Clear the compactedfiles from the store file manager<a name="line.2710"></a>
+<span class="sourceLineNo">2711</span>      clearCompactedfiles(filesToRemove);<a name="line.2711"></a>
+<span class="sourceLineNo">2712</span>      // Try to send report of this archival to the Master for updating quota usage faster<a name="line.2712"></a>
+<span class="sourceLineNo">2713</span>      reportArchivedFilesForQuota(filesToRemove, storeFileSizes);<a name="line.2713"></a>
+<span class="sourceLineNo">2714</span>    }<a name="line.2714"></a>
+<span class="sourceLineNo">2715</span>  }<a name="line.2715"></a>
+<span class="sourceLineNo">2716</span><a name="line.2716"></a>
+<span class="sourceLineNo">2717</span>  /**<a name="line.2717"></a>
+<span class="sourceLineNo">2718</span>   * Computes the length of a store file without succumbing to any errors along the way. If an<a name="line.2718"></a>
+<span class="sourceLineNo">2719</span>   * error is encountered, the implementation returns {@code 0} instead of the actual size.<a name="line.2719"></a>
+<span class="sourceLineNo">2720</span>   *<a name="line.2720"></a>
+<span class="sourceLineNo">2721</span>   * @param file The file to compute the size of.<a name="line.2721"></a>
+<span class="sourceLineNo">2722</span>   * @return The size in bytes of the provided {@code file}.<a name="line.2722"></a>
+<span class="sourceLineNo">2723</span>   */<a name="line.2723"></a>
+<span class="sourceLineNo">2724</span>  long getStoreFileSize(HStoreFile file) {<a name="line.2724"></a>
+<span class="sourceLineNo">2725</span>    long length = 0;<a name="line.2725"></a>
+<span class="sourceLineNo">2726</span>    try {<a name="line.2726"></a>
+<span class="sourceLineNo">2727</span>      file.initReader();<a name="line.2727"></a>
+<span class="sourceLineNo">2728</span>      length = file.getReader().length();<a name="line.2728"></a>
+<span class="sourceLineNo">2729</span>    } catch (IOException e) {<a name="line.2729"></a>
+<span class="sourceLineNo">2730</span>      LOG.trace("Failed to open reader when trying to compute store file size, ignoring", e);<a name="line.2730"></a>
+<span class="sourceLineNo">2731</span>    } finally {<a name="line.2731"></a>
+<span class="sourceLineNo">2732</span>      try {<a name="line.2732"></a>
+<span class="sourceLineNo">2733</span>        file.closeStoreFile(<a name="line.2733"></a>
+<span class="sourceLineNo">2734</span>            file.getCacheConf() != null ? file.getCacheConf().shouldEvictOnClose() : true);<a name="line.2734"></a>
+<span class="sourceLineNo">2735</span>      } catch (IOException e) {<a name="line.2735"></a>
+<span class="sourceLineNo">2736</span>        LOG.trace("Failed to close reader after computing store file size, ignoring", e);<a name="line.2736"></a>
+<span class="sourceLineNo">2737</span>      }<a name="line.2737"></a>
 <span class="sourceLineNo">2738</span>    }<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span>    List&lt;Entry&lt;String,Long&gt;&gt; filesWithSizes = new ArrayList&lt;&gt;(archivedFiles.size());<a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>    Iterator&lt;Long&gt; fileSizeIter = fileSizes.iterator();<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>    for (StoreFile storeFile : archivedFiles) {<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span>      final long fileSize = fileSizeIter.next();<a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>      if (storeFile.isHFile() &amp;&amp; fileSize != 0) {<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span>        filesWithSizes.add(Maps.immutableEntry(storeFile.getPath().getName(), fileSize));<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span>      }<a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>    }<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>    if (LOG.isTraceEnabled()) {<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>      LOG.trace("Files archived: " + archivedFiles + ", reporting the following to the Master: "<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span>          + filesWithSizes);<a name="line.2749"></a>
-<span class="sourceLineNo">2750</span>    }<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span>    boolean success = rss.reportFileArchivalForQuotas(getTableName(), filesWithSizes);<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>    if (!success) {<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>      LOG.warn("Failed to report archival of files: " + filesWithSizes);<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>    }<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span>  }<a name="line.2755"></a>
-<span class="sourceLineNo">2756</span><a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>  public int getCurrentParallelPutCount() {<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>    return currentParallelPutCount.get();<a name="line.2758"></a>
+<span class="sourceLineNo">2739</span>    return length;<a name="line.2739"></a>
+<span class="sourceLineNo">2740</span>  }<a name="line.2740"></a>
+<span class="sourceLineNo">2741</span><a name="line.2741"></a>
+<span class="sourceLineNo">2742</span>  public Long preFlushSeqIDEstimation() {<a name="line.2742"></a>
+<span class="sourceLineNo">2743</span>    return memstore.preFlushSeqIDEstimation();<a name="line.2743"></a>
+<span class="sourceLineNo">2744</span>  }<a name="line.2744"></a>
+<span class="sourceLineNo">2745</span><a name="line.2745"></a>
+<span class="sourceLineNo">2746</span>  @Override<a name="line.2746"></a>
+<span class="sourceLineNo">2747</span>  public boolean isSloppyMemStore() {<a name="line.2747"></a>
+<span class="sourceLineNo">2748</span>    return this.memstore.isSloppy();<a name="line.2748"></a>
+<span class="sourceLineNo">2749</span>  }<a name="line.2749"></a>
+<span class="sourceLineNo">2750</span><a name="line.2750"></a>
+<span class="sourceLineNo">2751</span>  private void clearCompactedfiles(List&lt;HStoreFile&gt; filesToRemove) throws IOException {<a name="line.2751"></a>
+<span class="sourceLineNo">2752</span>    LOG.trace("Clearing the compacted file {} from this store", filesToRemove);<a name="line.2752"></a>
+<span class="sourceLineNo">2753</span>    try {<a name="line.2753"></a>
+<span class="sourceLineNo">2754</span>      lock.writeLock().lock();<a name="line.2754"></a>
+<span class="sourceLineNo">2755</span>      this.getStoreEngine().getStoreFileManager().removeCompactedFiles(filesToRemove);<a name="line.2755"></a>
+<span class="sourceLineNo">2756</span>    } finally {<a name="line.2756"></a>
+<span class="sourceLineNo">2757</span>      lock.writeLock().unlock();<a name="line.2757"></a>
+<span class="sourceLineNo">2758</span>    }<a name="line.2758"></a>
 <span class="sourceLineNo">2759</span>  }<a name="line.2759"></a>
 <span class="sourceLineNo">2760</span><a name="line.2760"></a>
-<span class="sourceLineNo">2761</span>}<a name="line.2761"></a>
+<span class="sourceLineNo">2761</span>  void reportArchivedFilesForQuota(List&lt;? extends StoreFile&gt; archivedFiles, List&lt;Long&gt; fileSizes) {<a name="line.2761"></a>
+<span class="sourceLineNo">2762</span>    // Sanity check from the caller<a name="line.2762"></a>
+<span class="sourceLineNo">2763</span>    if (archivedFiles.size() != fileSizes.size()) {<a name="line.2763"></a>
+<span class="sourceLineNo">2764</span>      throw new RuntimeException("Coding error: should never see lists of varying size");<a name="line.2764"></a>
+<span class="sourceLineNo">2765</span>    }<a name="line.2765"></a>
+<span class="sourceLineNo">2766</span>    RegionServerServices rss = this.region.getRegionServerServices();<a name="line.2766"></a>
+<span class="sourceLineNo">2767</span>    if (rss == null) {<a name="line.2767"></a>
+<span class="sourceLineNo">2768</span>      return;<a name="line.2768"></a>
+<span class="sourceLineNo">2769</span>    }<a name="line.2769"></a>
+<span class="sourceLineNo">2770</span>    List&lt;Entry&lt;String,Long&gt;&gt; filesWithSizes = new ArrayList&lt;&gt;(archivedFiles.size());<a name="line.2770"></a>
+<span class="sourceLineNo">2771</span>    Iterator&lt;Long&gt; fileSizeIter = fileSizes.iterator();<a name="line.2771"></a>
+<span class="sourceLineNo">2772</span>    for (StoreFile storeFile : archivedFiles) {<a name="line.2772"></a>
+<span class="sourceLineNo">2773</span>      final long fileSize = fileSizeIter.next();<a name="line.2773"></a>
+<span class="sourceLineNo">2774</span>      if (storeFile.isHFile() &amp;&amp; fileSize != 0) {<a name="line.2774"></a>
+<span class="sourceLineNo">2775</span>        filesWithSizes.add(Maps.immutableEntry(storeFile.getPath().getName(), fileSize));<a name="line.2775"></a>
+<span class="sourceLineNo">2776</span>      }<a name="line.2776"></a>
+<span class="sourceLineNo">2777</span>    }<a name="line.2777"></a>
+<span class="sourceLineNo">2778</span>    if (LOG.isTraceEnabled()) {<a name="line.2778"></a>
+<span class="sourceLineNo">2779</span>      LOG.trace("Files archived: " + archivedFiles + ", reporting the following to the Master: "<a name="line.2779"></a>
+<span class="sourceLineNo">2780</span>          + filesWithSizes);<a name="line.2780"></a>
+<span class="sourceLineNo">2781</span>    }<a name="line.2781"></a>
+<span class="sourceLineNo">2782</span>    boolean success = rss.reportFileArchivalForQuotas(getTableName(), filesWithSizes);<a name="line.2782"></a>
+<span class="sourceLineNo">2783</span>    if (!success) {<a name="line.2783"></a>
+<span class="sourceLineNo">2784</span>      LOG.warn("Failed to report archival of files: " + filesWithSizes);<a name="line.2784"></a>
+<span class="sourceLineNo">2785</span>    }<a name="line.2785"></a>
+<span class="sourceLineNo">2786</span>  }<a name="line.2786"></a>
+<span class="sourceLineNo">2787</span><a name="line.2787"></a>
+<span class="sourceLineNo">2788</span>  public int getCurrentParallelPutCount() {<a name="line.2788"></a>
+<span class="sourceLineNo">2789</span>    return currentParallelPutCount.get();<a name="line.2789"></a>
+<span class="sourceLineNo">2790</span>  }<a name="line.2790"></a>
+<span class="sourceLineNo">2791</span><a name="line.2791"></a>
+<span class="sourceLineNo">2792</span>}<a name="line.2792"></a>
 
 
 


[35/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/master/MasterRpcServices.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/MasterRpcServices.html b/devapidocs/org/apache/hadoop/hbase/master/MasterRpcServices.html
index 79af07a..cca66ed 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/MasterRpcServices.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/MasterRpcServices.html
@@ -1071,7 +1071,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>addColumn</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AddColumnResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.545">addColumn</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AddColumnResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.544">addColumn</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                   org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AddColumnRequest&nbsp;req)
                                                                                            throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1088,7 +1088,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>assignRegion</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AssignRegionResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.565">assignRegion</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AssignRegionResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.564">assignRegion</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                         org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AssignRegionRequest&nbsp;req)
                                                                                                  throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1105,7 +1105,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>balance</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.BalanceResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.597">balance</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.BalanceResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.596">balance</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                               org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.BalanceRequest&nbsp;request)
                                                                                        throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1122,7 +1122,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>createNamespace</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateNamespaceResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.608">createNamespace</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateNamespaceResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.607">createNamespace</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                               org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateNamespaceRequest&nbsp;request)
                                                                                                        throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1139,7 +1139,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateTableResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.622">createTable</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateTableResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.621">createTable</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                       org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.CreateTableRequest&nbsp;req)
                                                                                                throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1156,7 +1156,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteColumn</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteColumnResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.638">deleteColumn</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteColumnResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.637">deleteColumn</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                         org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteColumnRequest&nbsp;req)
                                                                                                  throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1173,7 +1173,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteNamespace</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteNamespaceResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.658">deleteNamespace</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteNamespaceResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.657">deleteNamespace</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                               org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteNamespaceRequest&nbsp;request)
                                                                                                        throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1190,7 +1190,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteSnapshot</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteSnapshotResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.679">deleteSnapshot</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteSnapshotResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.678">deleteSnapshot</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                             org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteSnapshotRequest&nbsp;request)
                                                                                                      throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <div class="block">Execute Delete Snapshot operation.</div>
@@ -1212,7 +1212,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteTableResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.694">deleteTable</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteTableResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.693">deleteTable</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                       org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DeleteTableRequest&nbsp;request)
                                                                                                throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1229,7 +1229,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>truncateTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.TruncateTableResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.706">truncateTable</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.TruncateTableResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.705">truncateTable</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                           org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.TruncateTableRequest&nbsp;request)
                                                                                                    throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1246,7 +1246,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>disableTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DisableTableResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.721">disableTable</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DisableTableResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.720">disableTable</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                         org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.DisableTableRequest&nbsp;request)
                                                                                                  throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1263,7 +1263,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>enableCatalogJanitor</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableCatalogJanitorResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.735">enableCatalogJanitor</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableCatalogJanitorResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.734">enableCatalogJanitor</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
                                                                                                                         org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableCatalogJanitorRequest&nbsp;req)
                                                                                                                  throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1280,7 +1280,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>setCleanerChoreRunning</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetCleanerChoreRunningResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.743">setCleanerChoreRunning</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetCleanerChoreRunningResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.742">setCleanerChoreRunning</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
                                                                                                                             org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetCleanerChoreRunningRequest&nbsp;req)
                                                                                                                      throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1297,7 +1297,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>enableTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableTableResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.755">enableTable</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableTableResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.754">enableTable</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                       org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.EnableTableRequest&nbsp;request)
                                                                                                throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1314,7 +1314,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>mergeTableRegions</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MergeTableRegionsResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.769">mergeTableRegions</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MergeTableRegionsResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.768">mergeTableRegions</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
                                                                                                                   org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MergeTableRegionsRequest&nbsp;request)
                                                                                                            throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1331,7 +1331,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>splitRegion</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SplitTableRegionResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.809">splitRegion</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SplitTableRegionResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.808">splitRegion</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                            org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SplitTableRegionRequest&nbsp;request)
                                                                                                     throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1348,7 +1348,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>execMasterService</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.824">execMasterService</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.823">execMasterService</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                                    org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceRequest&nbsp;request)
                                                                                                             throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1365,7 +1365,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>execProcedure</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ExecProcedureResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.868">execProcedure</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ExecProcedureResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.867">execProcedure</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                           org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ExecProcedureRequest&nbsp;request)
                                                                                                    throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <div class="block">Triggers an asynchronous attempt to run a distributed procedure.
@@ -1384,7 +1384,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>execProcedureWithRet</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ExecProcedureResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.900">execProcedureWithRet</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ExecProcedureResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.899">execProcedureWithRet</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                                  org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ExecProcedureRequest&nbsp;request)
                                                                                                           throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <div class="block">Triggers a synchronous attempt to run a distributed procedure and sets
@@ -1404,7 +1404,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>getClusterStatus</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetClusterStatusResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.924">getClusterStatus</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetClusterStatusResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.923">getClusterStatus</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                                 org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetClusterStatusRequest&nbsp;req)
                                                                                                          throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1421,7 +1421,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompletedSnapshots</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetCompletedSnapshotsResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.941">getCompletedSnapshots</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetCompletedSnapshotsResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.940">getCompletedSnapshots</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                                           org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetCompletedSnapshotsRequest&nbsp;request)
                                                                                                                    throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <div class="block">List the currently available/stored snapshots. Any in-progress snapshots are ignored</div>
@@ -1439,7 +1439,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>getNamespaceDescriptor</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetNamespaceDescriptorResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.959">getNamespaceDescriptor</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetNamespaceDescriptorResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.958">getNamespaceDescriptor</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                                             org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetNamespaceDescriptorRequest&nbsp;request)
                                                                                                                      throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1456,7 +1456,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>getSchemaAlterStatus</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetSchemaAlterStatusResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.981">getSchemaAlterStatus</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetSchemaAlterStatusResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.980">getSchemaAlterStatus</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                                         org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetSchemaAlterStatusRequest&nbsp;req)
                                                                                                                  throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <div class="block">Get the number of regions of the table that have been updated by the alter.</div>
@@ -1478,7 +1478,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableDescriptors</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableDescriptorsResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1010">getTableDescriptors</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableDescriptorsResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1009">getTableDescriptors</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
                                                                                                                       org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableDescriptorsRequest&nbsp;req)
                                                                                                                throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <div class="block">Get list of TableDescriptors for requested tables.</div>
@@ -1502,7 +1502,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableNames</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableNamesResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1049">getTableNames</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableNamesResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1048">getTableNames</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                           org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableNamesRequest&nbsp;req)
                                                                                                    throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <div class="block">Get list of userspace table names</div>
@@ -1525,7 +1525,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableState</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableStateResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1073">getTableState</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableStateResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1072">getTableState</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                           org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetTableStateRequest&nbsp;request)
                                                                                                    throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1542,7 +1542,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>isCatalogJanitorEnabled</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCatalogJanitorEnabledResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1088">isCatalogJanitorEnabled</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCatalogJanitorEnabledResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1087">isCatalogJanitorEnabled</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
                                                                                                                               org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCatalogJanitorEnabledRequest&nbsp;req)
                                                                                                                        throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1559,7 +1559,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>isCleanerChoreEnabled</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCleanerChoreEnabledResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1095">isCleanerChoreEnabled</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCleanerChoreEnabledResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1094">isCleanerChoreEnabled</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
                                                                                                                           org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsCleanerChoreEnabledRequest&nbsp;req)
                                                                                                                    throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1576,7 +1576,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>isMasterRunning</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsMasterRunningResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1103">isMasterRunning</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsMasterRunningResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1102">isMasterRunning</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
                                                                                                               org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsMasterRunningRequest&nbsp;req)
                                                                                                        throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1593,7 +1593,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>isProcedureDone</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsProcedureDoneResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1120">isProcedureDone</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsProcedureDoneResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1119">isProcedureDone</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                               org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsProcedureDoneRequest&nbsp;request)
                                                                                                        throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <div class="block">Checks if the specified procedure is done.</div>
@@ -1613,7 +1613,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>isSnapshotDone</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSnapshotDoneResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1154">isSnapshotDone</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSnapshotDoneResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1153">isSnapshotDone</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                             org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSnapshotDoneRequest&nbsp;request)
                                                                                                      throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <div class="block">Checks if the specified snapshot is done.</div>
@@ -1635,7 +1635,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>getProcedureResult</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProcedureResultResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1172">getProcedureResult</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProcedureResultResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1171">getProcedureResult</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                                     org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProcedureResultRequest&nbsp;request)
                                                                                                              throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1652,7 +1652,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>abortProcedure</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AbortProcedureResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1208">abortProcedure</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;rpcController,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AbortProcedureResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1207">abortProcedure</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;rpcController,
                                                                                                             org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.AbortProcedureRequest&nbsp;request)
                                                                                                      throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1669,7 +1669,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>listNamespaceDescriptors</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListNamespaceDescriptorsResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1222">listNamespaceDescriptors</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListNamespaceDescriptorsResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1221">listNamespaceDescriptors</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
                                                                                                                                 org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListNamespaceDescriptorsRequest&nbsp;request)
                                                                                                                          throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1686,7 +1686,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>getProcedures</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProceduresResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1237">getProcedures</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;rpcController,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProceduresResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1236">getProcedures</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;rpcController,
                                                                                                           org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetProceduresRequest&nbsp;request)
                                                                                                    throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1703,7 +1703,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>getLocks</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetLocksResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1252">getLocks</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetLocksResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1251">getLocks</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                 org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.GetLocksRequest&nbsp;request)
                                                                                          throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1720,7 +1720,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>listTableDescriptorsByNamespace</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableDescriptorsByNamespaceResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1269">listTableDescriptorsByNamespace</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableDescriptorsByNamespaceResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1268">listTableDescriptorsByNamespace</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
                                                                                                                                               org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableDescriptorsByNamespaceRequest&nbsp;request)
                                                                                                                                        throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1737,7 +1737,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>listTableNamesByNamespace</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableNamesByNamespaceResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1285">listTableNamesByNamespace</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableNamesByNamespaceResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1284">listTableNamesByNamespace</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
                                                                                                                                   org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ListTableNamesByNamespaceRequest&nbsp;request)
                                                                                                                            throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1754,7 +1754,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>modifyColumn</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyColumnResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1300">modifyColumn</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyColumnResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1299">modifyColumn</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                         org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyColumnRequest&nbsp;req)
                                                                                                  throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1771,7 +1771,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>modifyNamespace</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyNamespaceResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1320">modifyNamespace</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyNamespaceResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1319">modifyNamespace</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                               org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyNamespaceRequest&nbsp;request)
                                                                                                        throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1788,7 +1788,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>modifyTable</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyTableResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1334">modifyTable</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyTableResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1333">modifyTable</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                       org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ModifyTableRequest&nbsp;req)
                                                                                                throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1805,7 +1805,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>moveRegion</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MoveRegionResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1349">moveRegion</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MoveRegionResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1348">moveRegion</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                     org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MoveRegionRequest&nbsp;req)
                                                                                              throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1822,7 +1822,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>offlineRegion</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.OfflineRegionResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1379">offlineRegion</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.OfflineRegionResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1378">offlineRegion</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                           org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.OfflineRegionRequest&nbsp;request)
                                                                                                    throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <div class="block">Offline specified region from master's in-memory state. It will not attempt to
@@ -1843,7 +1843,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>restoreSnapshot</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RestoreSnapshotResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1422">restoreSnapshot</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RestoreSnapshotResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1421">restoreSnapshot</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                               org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RestoreSnapshotRequest&nbsp;request)
                                                                                                        throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <div class="block">Execute Restore/Clone snapshot operation.
@@ -1871,7 +1871,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>runCatalogScan</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCatalogScanResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1436">runCatalogScan</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCatalogScanResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1435">runCatalogScan</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
                                                                                                             org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCatalogScanRequest&nbsp;req)
                                                                                                      throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1888,7 +1888,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>runCleanerChore</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCleanerChoreResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1447">runCleanerChore</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCleanerChoreResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1446">runCleanerChore</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
                                                                                                               org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.RunCleanerChoreRequest&nbsp;req)
                                                                                                        throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1905,7 +1905,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>setBalancerRunning</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetBalancerRunningResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1455">setBalancerRunning</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetBalancerRunningResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1454">setBalancerRunning</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
                                                                                                                     org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetBalancerRunningRequest&nbsp;req)
                                                                                                              throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1922,7 +1922,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdown</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ShutdownResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1468">shutdown</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ShutdownResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1467">shutdown</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                 org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.ShutdownRequest&nbsp;request)
                                                                                          throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1939,7 +1939,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SnapshotResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1485">snapshot</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SnapshotResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1484">snapshot</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                 org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SnapshotRequest&nbsp;request)
                                                                                          throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <div class="block">Triggers an asynchronous attempt to take a snapshot.
@@ -1958,7 +1958,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>stopMaster</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.StopMasterResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1510">stopMaster</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.StopMasterResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1509">stopMaster</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                     org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.StopMasterRequest&nbsp;request)
                                                                                              throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1975,7 +1975,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>isMasterInMaintenanceMode</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsInMaintenanceModeResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1523">isMasterInMaintenanceMode</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsInMaintenanceModeResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1522">isMasterInMaintenanceMode</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                                             org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsInMaintenanceModeRequest&nbsp;request)
                                                                                                                      throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -1992,7 +1992,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>unassignRegion</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.UnassignRegionResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1536">unassignRegion</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.UnassignRegionResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1535">unassignRegion</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                             org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.UnassignRegionRequest&nbsp;req)
                                                                                                      throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -2009,7 +2009,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>reportRegionStateTransition</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1577">reportRegionStateTransition</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1576">reportRegionStateTransition</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
                                                                                                                                                   org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionRequest&nbsp;req)
                                                                                                                                            throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -2026,7 +2026,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>setQuota</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetQuotaResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1588">setQuota</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetQuotaResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1587">setQuota</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;c,
                                                                                                 org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetQuotaRequest&nbsp;req)
                                                                                          throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -2043,7 +2043,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastMajorCompactionTimestamp</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MajorCompactionTimestampResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1599">getLastMajorCompactionTimestamp</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MajorCompactionTimestampResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1598">getLastMajorCompactionTimestamp</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                                                        org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MajorCompactionTimestampRequest&nbsp;request)
                                                                                                                                 throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -2060,7 +2060,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastMajorCompactionTimestampForRegion</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MajorCompactionTimestampResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1614">getLastMajorCompactionTimestampForRegion</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MajorCompactionTimestampResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1613">getLastMajorCompactionTimestampForRegion</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                                                                 org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MajorCompactionTimestampForRegionRequest&nbsp;request)
                                                                                                                                          throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -2077,7 +2077,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>compactRegion</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactRegionResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1638">compactRegion</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactRegionResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1637">compactRegion</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                          org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactRegionRequest&nbsp;request)
                                                                                                   throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <div class="block">Compact a region on the master.</div>
@@ -2100,7 +2100,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>checkHFileFormatVersionForMob</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1660">checkHFileFormatVersionForMob</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1659">checkHFileFormatVersionForMob</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></pre>
 <div class="block">check configured hfile format version before to do compaction</div>
 <dl>
@@ -2115,7 +2115,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionInfo</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1672">getRegionInfo</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1671">getRegionInfo</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                          org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoRequest&nbsp;request)
                                                                                                   throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -2134,7 +2134,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>compactMob</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactRegionResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1697">compactMob</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactRegionRequest&nbsp;request,
+<pre>private&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactRegionResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1696">compactMob</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.CompactRegionRequest&nbsp;request,
                                                                                                        <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">Compacts the mob files in the current table.</div>
@@ -2155,7 +2155,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>isBalancerEnabled</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsBalancerEnabledResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1743">isBalancerEnabled</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsBalancerEnabledResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1742">isBalancerEnabled</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                                   org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsBalancerEnabledRequest&nbsp;request)
                                                                                                            throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -2172,7 +2172,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>setSplitOrMergeEnabled</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetSplitOrMergeEnabledResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1751">setSplitOrMergeEnabled</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetSplitOrMergeEnabledResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1750">setSplitOrMergeEnabled</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                                             org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetSplitOrMergeEnabledRequest&nbsp;request)
                                                                                                                      throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -2189,7 +2189,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>isSplitOrMergeEnabled</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSplitOrMergeEnabledResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1778">isSplitOrMergeEnabled</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSplitOrMergeEnabledResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1777">isSplitOrMergeEnabled</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                                           org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsSplitOrMergeEnabledRequest&nbsp;request)
                                                                                                                    throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -2206,7 +2206,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>normalize</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.NormalizeResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1786">normalize</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.NormalizeResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1785">normalize</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                   org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.NormalizeRequest&nbsp;request)
                                                                                            throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -2223,7 +2223,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>setNormalizerRunning</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetNormalizerRunningResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1797">setNormalizerRunning</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetNormalizerRunningResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1796">setNormalizerRunning</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                                         org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SetNormalizerRunningRequest&nbsp;request)
                                                                                                                  throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -2240,7 +2240,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>isNormalizerEnabled</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsNormalizerEnabledResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1814">isNormalizerEnabled</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsNormalizerEnabledResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1813">isNormalizerEnabled</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                                       org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.IsNormalizerEnabledRequest&nbsp;request)
                                                                                                                throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -2257,7 +2257,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>getSecurityCapabilities</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SecurityCapabilitiesResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1825">getSecurityCapabilities</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SecurityCapabilitiesResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1824">getSecurityCapabilities</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                                            org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.SecurityCapabilitiesRequest&nbsp;request)
                                                                                                                     throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <div class="block">Returns the security capabilities in effect on the cluster</div>
@@ -2275,7 +2275,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>hasAccessControlServiceCoprocessor</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1864">hasAccessControlServiceCoprocessor</a>(<a href="../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html" title="class in org.apache.hadoop.hbase.master">MasterCoprocessorHost</a>&nbsp;cpHost)</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1863">hasAccessControlServiceCoprocessor</a>(<a href="../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html" title="class in org.apache.hadoop.hbase.master">MasterCoprocessorHost</a>&nbsp;cpHost)</pre>
 <div class="block">Determines if there is a MasterCoprocessor deployed which implements
  <code>AccessControlProtos.AccessControlService.Interface</code>.</div>
 </li>
@@ -2286,7 +2286,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>hasVisibilityLabelsServiceCoprocessor</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1873">hasVisibilityLabelsServiceCoprocessor</a>(<a href="../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html" title="class in org.apache.hadoop.hbase.master">MasterCoprocessorHost</a>&nbsp;cpHost)</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1872">hasVisibilityLabelsServiceCoprocessor</a>(<a href="../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html" title="class in org.apache.hadoop.hbase.master">MasterCoprocessorHost</a>&nbsp;cpHost)</pre>
 <div class="block">Determines if there is a MasterCoprocessor deployed which implements
  <code>VisibilityLabelsProtos.VisibilityLabelsService.Interface</code>.</div>
 </li>
@@ -2297,7 +2297,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>checkCoprocessorWithService</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1883">checkCoprocessorWithService</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/coprocessor/MasterCoprocessor.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessor</a>&gt;&nbsp;coprocessorsToCheck,
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1882">checkCoprocessorWithService</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/coprocessor/MasterCoprocessor.html" title="interface in org.apache.hadoop.hbase.coprocessor">MasterCoprocessor</a>&gt;&nbsp;coprocessorsToCheck,
                                     <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;service)</pre>
 <div class="block">Determines if there is a coprocessor implementation in the provided argument which extends
  or implements the provided <code>service</code>.</div>
@@ -2309,7 +2309,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>convert</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client">MasterSwitchType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1896">convert</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MasterSwitchType&nbsp;switchType)</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client">MasterSwitchType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1895">convert</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MasterSwitchType&nbsp;switchType)</pre>
 </li>
 </ul>
 <a name="addReplicationPeer-org.apache.hbase.thirdparty.com.google.protobuf.RpcController-org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.AddReplicationPeerRequest-">
@@ -2318,7 +2318,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>addReplicationPeer</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.AddReplicationPeerResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1909">addReplicationPeer</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.AddReplicationPeerResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1908">addReplicationPeer</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                                          org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.AddReplicationPeerRequest&nbsp;request)
                                                                                                                   throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -2335,7 +2335,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>removeReplicationPeer</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.RemoveReplicationPeerResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1922">removeReplicationPeer</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.RemoveReplicationPeerResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1921">removeReplicationPeer</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
                                                                                                                                org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.RemoveReplicationPeerRequest&nbsp;request)
                                                                                                                         throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException</pre>
 <dl>
@@ -2352,7 +2352,7 @@ implements org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.Master
 <ul class="blockList">
 <li class="blockList">
 <h4>enableReplicationPeer</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.EnableReplicationPeerResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1933">enableReplicationPeer</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controller,
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ReplicationProtos.EnableReplicationPeerResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html#line.1932">enableReplicationPeer</a>(org.apache.hbase.thirdparty.com.google.protobuf.RpcController&nbsp;controlle

<TRUNCATED>

[09/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.html b/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.html
index d58d129..5abd915 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":10,"i5":10,"i6":9,"i7":10,"i8":9,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10};
+var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":10,"i5":10,"i6":9,"i7":10,"i8":9,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.78">TestMetaTableAccessor</a>
+<pre>public class <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.79">TestMetaTableAccessor</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">Test <code>MetaTableAccessor</code>.</div>
 </li>
@@ -263,51 +263,59 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i9" class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestMetaTableAccessor.html#testMastersSystemTimeIsUsedInMergeRegions--">testMastersSystemTimeIsUsedInMergeRegions</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestMetaTableAccessor.html#testIsMetaWhenAllHealthy--">testIsMetaWhenAllHealthy</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i10" class="altColor">
 <td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestMetaTableAccessor.html#testIsMetaWhenMetaGoesOffline--">testIsMetaWhenMetaGoesOffline</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestMetaTableAccessor.html#testMastersSystemTimeIsUsedInMergeRegions--">testMastersSystemTimeIsUsedInMergeRegions</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i12" class="altColor">
+<td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestMetaTableAccessor.html#testMastersSystemTimeIsUsedInUpdateLocations--">testMastersSystemTimeIsUsedInUpdateLocations</a></span>()</code>
 <div class="block">Tests whether maximum of masters system time versus RSs local system time is used</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestMetaTableAccessor.html#testMetaLocationForRegionReplicasIsAddedAtRegionMerge--">testMetaLocationForRegionReplicasIsAddedAtRegionMerge</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestMetaTableAccessor.html#testMetaLocationForRegionReplicasIsAddedAtRegionSplit--">testMetaLocationForRegionReplicasIsAddedAtRegionSplit</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<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/TestMetaTableAccessor.html#testMetaLocationForRegionReplicasIsAddedAtTableCreation--">testMetaLocationForRegionReplicasIsAddedAtTableCreation</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i14" class="altColor">
+<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/TestMetaTableAccessor.html#testMetaLocationForRegionReplicasIsRemovedAtTableDeletion--">testMetaLocationForRegionReplicasIsRemovedAtTableDeletion</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
+<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/TestMetaTableAccessor.html#testMetaLocationsForRegionReplicas--">testMetaLocationsForRegionReplicas</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<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/TestMetaTableAccessor.html#testMetaReaderGetColumnMethods--">testMetaReaderGetColumnMethods</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i17" class="rowColor">
+<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/TestMetaTableAccessor.html#testMetaScanner--">testMetaScanner</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i18" class="altColor">
+<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/TestMetaTableAccessor.html#testMetaUpdatesGoToPriorityQueue--">testMetaUpdatesGoToPriorityQueue</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i19" class="rowColor">
+<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/TestMetaTableAccessor.html#testParseReplicaIdFromServerColumn--">testParseReplicaIdFromServerColumn</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestMetaTableAccessor.html#testRetrying--">testRetrying</a></span>()</code>
 <div class="block">Does <code>MetaTableAccessor.getRegion(Connection, byte[])</code> and a write
@@ -315,11 +323,11 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  works.</div>
 </td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestMetaTableAccessor.html#testScanMetaForTable--">testScanMetaForTable</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i24" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestMetaTableAccessor.html#testTableExists--">testTableExists</a></span>()</code>&nbsp;</td>
 </tr>
@@ -351,7 +359,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <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/TestMetaTableAccessor.html#line.81">CLASS_RULE</a></pre>
+<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/TestMetaTableAccessor.html#line.82">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -360,7 +368,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/TestMetaTableAccessor.html#line.84">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.85">LOG</a></pre>
 </li>
 </ul>
 <a name="UTIL">
@@ -369,7 +377,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>UTIL</h4>
-<pre>private static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.85">UTIL</a></pre>
+<pre>private static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.86">UTIL</a></pre>
 </li>
 </ul>
 <a name="connection">
@@ -378,7 +386,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>connection</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.client.Connection <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.86">connection</a></pre>
+<pre>private static&nbsp;org.apache.hadoop.hbase.client.Connection <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.87">connection</a></pre>
 </li>
 </ul>
 <a name="random">
@@ -387,7 +395,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>random</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.87">random</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.88">random</a></pre>
 </li>
 </ul>
 <a name="name">
@@ -396,7 +404,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>name</h4>
-<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.90">name</a></pre>
+<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.91">name</a></pre>
 </li>
 </ul>
 </li>
@@ -413,7 +421,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestMetaTableAccessor</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.78">TestMetaTableAccessor</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.79">TestMetaTableAccessor</a>()</pre>
 </li>
 </ul>
 </li>
@@ -430,7 +438,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>beforeClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.92">beforeClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.93">beforeClass</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>
@@ -444,7 +452,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>afterClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.103">afterClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.104">afterClass</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>
@@ -452,13 +460,41 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="testIsMetaWhenAllHealthy--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testIsMetaWhenAllHealthy</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.110">testIsMetaWhenAllHealthy</a>()
+                              throws <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>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><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></code></dd>
+</dl>
+</li>
+</ul>
+<a name="testIsMetaWhenMetaGoesOffline--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testIsMetaWhenMetaGoesOffline</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.116">testIsMetaWhenMetaGoesOffline</a>()
+                                   throws <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>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><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></code></dd>
+</dl>
+</li>
+</ul>
 <a name="testRetrying--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>testRetrying</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.113">testRetrying</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.129">testRetrying</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>,
                          <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>
 <div class="block">Does <code>MetaTableAccessor.getRegion(Connection, byte[])</code> and a write
@@ -477,7 +513,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetRegionsFromMetaTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.234">testGetRegionsFromMetaTable</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.250">testGetRegionsFromMetaTable</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>,
                                         <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>
 <dl>
@@ -493,7 +529,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testTableExists</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.243">testTableExists</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.259">testTableExists</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></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -507,7 +543,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetRegion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.261">testGetRegion</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.277">testGetRegion</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>,
                           <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>
 <dl>
@@ -523,7 +559,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanMetaForTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.272">testScanMetaForTable</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.288">testScanMetaForTable</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>,
                                  <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>
 <dl>
@@ -539,7 +575,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGettingTableRegions</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;org.apache.hadoop.hbase.client.RegionInfo&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.294">testGettingTableRegions</a>(org.apache.hadoop.hbase.client.Connection&nbsp;connection,
+<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;org.apache.hadoop.hbase.client.RegionInfo&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.310">testGettingTableRegions</a>(org.apache.hadoop.hbase.client.Connection&nbsp;connection,
                                                                                        org.apache.hadoop.hbase.TableName&nbsp;name,
                                                                                        int&nbsp;regionCount)
                                                                                 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>,
@@ -557,7 +593,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetRegion</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.306">testGetRegion</a>(org.apache.hadoop.hbase.client.Connection&nbsp;connection,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.322">testGetRegion</a>(org.apache.hadoop.hbase.client.Connection&nbsp;connection,
                                   org.apache.hadoop.hbase.client.RegionInfo&nbsp;region)
                            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>
@@ -574,7 +610,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testParseReplicaIdFromServerColumn</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.316">testParseReplicaIdFromServerColumn</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.332">testParseReplicaIdFromServerColumn</a>()</pre>
 </li>
 </ul>
 <a name="testMetaReaderGetColumnMethods--">
@@ -583,7 +619,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMetaReaderGetColumnMethods</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.332">testMetaReaderGetColumnMethods</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.348">testMetaReaderGetColumnMethods</a>()</pre>
 </li>
 </ul>
 <a name="testMetaLocationsForRegionReplicas--">
@@ -592,7 +628,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMetaLocationsForRegionReplicas</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.352">testMetaLocationsForRegionReplicas</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.368">testMetaLocationsForRegionReplicas</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></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -606,7 +642,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>assertMetaLocation</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.411">assertMetaLocation</a>(org.apache.hadoop.hbase.client.Table&nbsp;meta,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.427">assertMetaLocation</a>(org.apache.hadoop.hbase.client.Table&nbsp;meta,
                                       byte[]&nbsp;row,
                                       org.apache.hadoop.hbase.ServerName&nbsp;serverName,
                                       long&nbsp;seqNum,
@@ -625,7 +661,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>assertEmptyMetaLocation</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.428">assertEmptyMetaLocation</a>(org.apache.hadoop.hbase.client.Table&nbsp;meta,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.444">assertEmptyMetaLocation</a>(org.apache.hadoop.hbase.client.Table&nbsp;meta,
                                            byte[]&nbsp;row,
                                            int&nbsp;replicaId)
                                     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>
@@ -641,7 +677,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMetaLocationForRegionReplicasIsRemovedAtTableDeletion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.443">testMetaLocationForRegionReplicasIsRemovedAtTableDeletion</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.459">testMetaLocationForRegionReplicasIsRemovedAtTableDeletion</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></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -655,7 +691,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMetaLocationForRegionReplicasIsAddedAtTableCreation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.481">testMetaLocationForRegionReplicasIsAddedAtTableCreation</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.497">testMetaLocationForRegionReplicasIsAddedAtTableCreation</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></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -669,7 +705,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMetaLocationForRegionReplicasIsAddedAtRegionSplit</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.504">testMetaLocationForRegionReplicasIsAddedAtRegionSplit</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.520">testMetaLocationForRegionReplicasIsAddedAtRegionSplit</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></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -683,7 +719,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMetaLocationForRegionReplicasIsAddedAtRegionMerge</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.544">testMetaLocationForRegionReplicasIsAddedAtRegionMerge</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.560">testMetaLocationForRegionReplicasIsAddedAtRegionMerge</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></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -697,7 +733,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMetaScanner</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.584">testMetaScanner</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.600">testMetaScanner</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>
@@ -711,7 +747,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMastersSystemTimeIsUsedInUpdateLocations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.631">testMastersSystemTimeIsUsedInUpdateLocations</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.647">testMastersSystemTimeIsUsedInUpdateLocations</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></pre>
 <div class="block">Tests whether maximum of masters system time versus RSs local system time is used</div>
 <dl>
@@ -726,7 +762,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMastersSystemTimeIsUsedInMergeRegions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.670">testMastersSystemTimeIsUsedInMergeRegions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.686">testMastersSystemTimeIsUsedInMergeRegions</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></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -740,7 +776,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMetaUpdatesGoToPriorityQueue</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.770">testMetaUpdatesGoToPriorityQueue</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.786">testMetaUpdatesGoToPriorityQueue</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>
@@ -754,7 +790,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testEmptyMetaDaughterLocationDuringSplit</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.825">testEmptyMetaDaughterLocationDuringSplit</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.841">testEmptyMetaDaughterLocationDuringSplit</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></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index 2d9b60f..6af42fe 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -146,8 +146,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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/TestBackupDeleteWithFailures.Failure.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestBackupDeleteWithFailures.Failure</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.FailurePhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestIncrementalBackupMergeWithFailures.FailurePhase</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestBackupDeleteWithFailures.Failure.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestBackupDeleteWithFailures.Failure</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/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 90e736f..15ad685 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
@@ -4947,54 +4947,58 @@
 </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">TestMemstoreLABWithoutPool.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCleanupCompactedFileOnRegionClose.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.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">TestMultiVersionConcurrencyControl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControl.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMemstoreLABWithoutPool.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.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">TestScanWithBloomError.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMultiVersionConcurrencyControl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControl.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">TestRSStatusServlet.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSStatusServlet.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScanWithBloomError.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.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">TestClusterId.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClusterId.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRSStatusServlet.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSStatusServlet.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">TestStripeStoreFileManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreFileManager.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestClusterId.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClusterId.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">TestMetricsRegionServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestStripeStoreFileManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreFileManager.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">TestRegionReplicasWithRestartScenarios.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMetricsRegionServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.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">TestWideScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWideScanner.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRegionReplicasWithRestartScenarios.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.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">TestHRegionServerBulkLoadWithOldClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoadWithOldClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestWideScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWideScanner.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">TestEncryptionKeyRotation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEncryptionKeyRotation.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHRegionServerBulkLoadWithOldClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoadWithOldClient.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">TestHRegionServerBulkLoadWithOldSecureEndpoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoadWithOldSecureEndpoint.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestEncryptionKeyRotation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEncryptionKeyRotation.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">TestHRegionServerBulkLoadWithOldSecureEndpoint.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoadWithOldSecureEndpoint.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">TestServerCustomProtocol.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 </tbody>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
index 7ce8cc8..41dc62c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
@@ -3077,65 +3077,69 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestServerCustomProtocol.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.html#util">util</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCleanupCompactedFileOnRegionClose.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#util">util</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestShutdownWhileWALBroken.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.html#UTIL">UTIL</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestServerCustomProtocol.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.html#util">util</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHeapMemoryManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.html#UTIL">UTIL</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestShutdownWhileWALBroken.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMajorCompaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMajorCompaction.html#UTIL">UTIL</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHeapMemoryManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestFlushLifeCycleTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestFlushLifeCycleTracker.html#UTIL">UTIL</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMajorCompaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMajorCompaction.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMinorCompaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMinorCompaction.html#UTIL">UTIL</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFlushLifeCycleTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestFlushLifeCycleTracker.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRegionServerCrashDisableWAL.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerCrashDisableWAL.html#UTIL">UTIL</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMinorCompaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMinorCompaction.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestRegionServerCrashDisableWAL.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerCrashDisableWAL.html#UTIL">UTIL</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestHRegionServerBulkLoad.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestOpenSeqNumUnexpectedIncrease.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestMobStoreCompaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMobStoreCompaction.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestCompaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompaction.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestSwitchToStreamRead.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestGetClosestAtOrBefore.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestGetClosestAtOrBefore.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestCompactionLifeCycleTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionLifeCycleTracker.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestCompactionInDeadRegionServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestScannerRetriableFailure.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerRetriableFailure.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyHStore.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyHStore.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyHStore.html
index 63a22a4..e8bc49a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyHStore.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyHStore.html
@@ -196,7 +196,7 @@ extends org.apache.hadoop.hbase.regionserver.HStore</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HStore</h3>
-<code>add, add, addChangedReaderObserver, areWritesEnabled, assertBulkLoadHFileOk, bulkLoadHFile, bulkLoadHFile, cancelRequestedCompaction, canSplit, close, closeAndArchiveCompactedFiles, compact, compactRecentForTestingAssumingDefaultPolicy, completeCompaction, createCacheConf, createFlushContext, createStoreEngine, createStoreFileAndReader, createWriterInTmp, deleteChangedReaderObserver, deregisterChildren, determineTTLFromFamily, doCompaction, flushCache, getAvgStoreFileAge, getBlockingFileCount, getBytesPerChecksum, getCacheConfig, getChecksumType, getCloseCheckInterval, getColumnFamilyDescriptor, getColumnFamilyName, getCompactedCellsCount, getCompactedCellsSize, getCompactedFiles, getCompactedFilesCount, getCompactionCheckMultiplier, getCompactionPressure, getCompactionProgress, getCompactPriority, getComparator, getCoprocessorHost, getCurrentParallelPutCount, getDataBlockEncoder, getFileSystem, getFlushableSize, getFlushedCellsCount, getFlushedCellsSize, getFlushedOutputFileS
 ize, getHFilesSize, getHRegion, getLastCompactSize, getMajorCompactedCellsCount, getMajorCompactedCellsSize, getMaxMemStoreTS, getMaxSequenceId, getMaxStoreFileAge, getMemStoreFlushSize, getMemStoreSize, getMinStoreFileAge, getNumHFiles, getNumReferenceFiles, getOffPeakHours, getRegionFileSystem, getRegionInfo, getScanInfo, getScanner, getScanners, getScanners, getScanners, getScanners, getSize, getSmallestReadPoint, getSnapshotSize, getSplitPoint, getStoreEngine, getStorefiles, getStorefilesCount, getStorefilesRootLevelIndexSize, getStorefilesSize, getStoreFileTtl, getStoreHomedir, getStoreHomedir, getStoreSizeUncompressed, getTableName, getTotalStaticBloomSize, getTotalStaticIndexSize, hasReferences, hasTooManyStoreFiles, heapSize, isPrimaryReplicaStore, isSloppyMemStore, needsCompaction, onConfigurationChange, postSnapshotOperation, preBulkLoadHFile, preFlushSeqIDEstimation, preSnapshotOperation, recreateScanners, refreshStoreFiles, refreshStoreFiles, registerChildren, replayComp
 actionMarker, requestCompaction, requestCompaction, shouldPerformMajorCompaction, startReplayingFromWAL, stopReplayingFromWAL, throttleCompaction, timeOfOldestEdit, toString, triggerMajorCompaction, upsert</code></li>
+<code>add, add, addChangedReaderObserver, areWritesEnabled, assertBulkLoadHFileOk, bulkLoadHFile, bulkLoadHFile, cancelRequestedCompaction, canSplit, close, closeAndArchiveCompactedFiles, closeAndArchiveCompactedFiles, compact, compactRecentForTestingAssumingDefaultPolicy, completeCompaction, createCacheConf, createFlushContext, createStoreEngine, createStoreFileAndReader, createWriterInTmp, deleteChangedReaderObserver, deregisterChildren, determineTTLFromFamily, doCompaction, flushCache, getAvgStoreFileAge, getBlockingFileCount, getBytesPerChecksum, getCacheConfig, getChecksumType, getCloseCheckInterval, getColumnFamilyDescriptor, getColumnFamilyName, getCompactedCellsCount, getCompactedCellsSize, getCompactedFiles, getCompactedFilesCount, getCompactionCheckMultiplier, getCompactionPressure, getCompactionProgress, getCompactPriority, getComparator, getCoprocessorHost, getCurrentParallelPutCount, getDataBlockEncoder, getFileSystem, getFlushableSize, getFlushedCellsCount, getFlushedC
 ellsSize, getFlushedOutputFileSize, getHFilesSize, getHRegion, getLastCompactSize, getMajorCompactedCellsCount, getMajorCompactedCellsSize, getMaxMemStoreTS, getMaxSequenceId, getMaxStoreFileAge, getMemStoreFlushSize, getMemStoreSize, getMinStoreFileAge, getNumHFiles, getNumReferenceFiles, getOffPeakHours, getRegionFileSystem, getRegionInfo, getScanInfo, getScanner, getScanners, getScanners, getScanners, getScanners, getSize, getSmallestReadPoint, getSnapshotSize, getSplitPoint, getStoreEngine, getStorefiles, getStorefilesCount, getStorefilesRootLevelIndexSize, getStorefilesSize, getStoreFileTtl, getStoreHomedir, getStoreHomedir, getStoreSizeUncompressed, getTableName, getTotalStaticBloomSize, getTotalStaticIndexSize, hasReferences, hasTooManyStoreFiles, heapSize, isPrimaryReplicaStore, isSloppyMemStore, needsCompaction, onConfigurationChange, postSnapshotOperation, preBulkLoadHFile, preFlushSeqIDEstimation, preSnapshotOperation, recreateScanners, refreshStoreFiles, refreshStoreFile
 s, registerChildren, replayCompactionMarker, requestCompaction, requestCompaction, shouldPerformMajorCompaction, startReplayingFromWAL, stopReplayingFromWAL, throttleCompaction, timeOfOldestEdit, toString, triggerMajorCompaction, upsert</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/coprocessor/example/TestRefreshHFilesEndpoint.HStoreWithFaultyRefreshHFilesAPI.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/example/TestRefreshHFilesEndpoint.HStoreWithFaultyRefreshHFilesAPI.html b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/example/TestRefreshHFilesEndpoint.HStoreWithFaultyRefreshHFilesAPI.html
index c9980b9..88e3d00 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/coprocessor/example/TestRefreshHFilesEndpoint.HStoreWithFaultyRefreshHFilesAPI.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/coprocessor/example/TestRefreshHFilesEndpoint.HStoreWithFaultyRefreshHFilesAPI.html
@@ -193,7 +193,7 @@ extends org.apache.hadoop.hbase.regionserver.HStore</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HStore</h3>
-<code>add, add, addChangedReaderObserver, areWritesEnabled, assertBulkLoadHFileOk, bulkLoadHFile, bulkLoadHFile, cancelRequestedCompaction, canSplit, close, closeAndArchiveCompactedFiles, compact, compactRecentForTestingAssumingDefaultPolicy, completeCompaction, createCacheConf, createFlushContext, createScanner, createStoreEngine, createStoreFileAndReader, createWriterInTmp, deleteChangedReaderObserver, deregisterChildren, determineTTLFromFamily, doCompaction, flushCache, getAvgStoreFileAge, getBlockingFileCount, getBytesPerChecksum, getCacheConfig, getChecksumType, getCloseCheckInterval, getColumnFamilyDescriptor, getColumnFamilyName, getCompactedCellsCount, getCompactedCellsSize, getCompactedFiles, getCompactedFilesCount, getCompactionCheckMultiplier, getCompactionPressure, getCompactionProgress, getCompactPriority, getComparator, getCoprocessorHost, getCurrentParallelPutCount, getDataBlockEncoder, getFileSystem, getFlushableSize, getFlushedCellsCount, getFlushedCellsSize, getFlu
 shedOutputFileSize, getHFilesSize, getHRegion, getLastCompactSize, getMajorCompactedCellsCount, getMajorCompactedCellsSize, getMaxMemStoreTS, getMaxSequenceId, getMaxStoreFileAge, getMemStoreFlushSize, getMemStoreSize, getMinStoreFileAge, getNumHFiles, getNumReferenceFiles, getOffPeakHours, getRegionFileSystem, getRegionInfo, getScanInfo, getScanner, getScanners, getScanners, getScanners, getScanners, getSize, getSmallestReadPoint, getSnapshotSize, getSplitPoint, getStoreEngine, getStorefiles, getStorefilesCount, getStorefilesRootLevelIndexSize, getStorefilesSize, getStoreFileTtl, getStoreHomedir, getStoreHomedir, getStoreSizeUncompressed, getTableName, getTotalStaticBloomSize, getTotalStaticIndexSize, hasReferences, hasTooManyStoreFiles, heapSize, isPrimaryReplicaStore, isSloppyMemStore, needsCompaction, onConfigurationChange, postSnapshotOperation, preBulkLoadHFile, preFlushSeqIDEstimation, preSnapshotOperation, recreateScanners, refreshStoreFiles, registerChildren, replayCompacti
 onMarker, requestCompaction, requestCompaction, shouldPerformMajorCompaction, startReplayingFromWAL, stopReplayingFromWAL, throttleCompaction, timeOfOldestEdit, toString, triggerMajorCompaction, upsert</code></li>
+<code>add, add, addChangedReaderObserver, areWritesEnabled, assertBulkLoadHFileOk, bulkLoadHFile, bulkLoadHFile, cancelRequestedCompaction, canSplit, close, closeAndArchiveCompactedFiles, closeAndArchiveCompactedFiles, compact, compactRecentForTestingAssumingDefaultPolicy, completeCompaction, createCacheConf, createFlushContext, createScanner, createStoreEngine, createStoreFileAndReader, createWriterInTmp, deleteChangedReaderObserver, deregisterChildren, determineTTLFromFamily, doCompaction, flushCache, getAvgStoreFileAge, getBlockingFileCount, getBytesPerChecksum, getCacheConfig, getChecksumType, getCloseCheckInterval, getColumnFamilyDescriptor, getColumnFamilyName, getCompactedCellsCount, getCompactedCellsSize, getCompactedFiles, getCompactedFilesCount, getCompactionCheckMultiplier, getCompactionPressure, getCompactionProgress, getCompactPriority, getComparator, getCoprocessorHost, getCurrentParallelPutCount, getDataBlockEncoder, getFileSystem, getFlushableSize, getFlushedCellsCou
 nt, getFlushedCellsSize, getFlushedOutputFileSize, getHFilesSize, getHRegion, getLastCompactSize, getMajorCompactedCellsCount, getMajorCompactedCellsSize, getMaxMemStoreTS, getMaxSequenceId, getMaxStoreFileAge, getMemStoreFlushSize, getMemStoreSize, getMinStoreFileAge, getNumHFiles, getNumReferenceFiles, getOffPeakHours, getRegionFileSystem, getRegionInfo, getScanInfo, getScanner, getScanners, getScanners, getScanners, getScanners, getSize, getSmallestReadPoint, getSnapshotSize, getSplitPoint, getStoreEngine, getStorefiles, getStorefilesCount, getStorefilesRootLevelIndexSize, getStorefilesSize, getStoreFileTtl, getStoreHomedir, getStoreHomedir, getStoreSizeUncompressed, getTableName, getTotalStaticBloomSize, getTotalStaticIndexSize, hasReferences, hasTooManyStoreFiles, heapSize, isPrimaryReplicaStore, isSloppyMemStore, needsCompaction, onConfigurationChange, postSnapshotOperation, preBulkLoadHFile, preFlushSeqIDEstimation, preSnapshotOperation, recreateScanners, refreshStoreFiles, r
 egisterChildren, replayCompactionMarker, requestCompaction, requestCompaction, shouldPerformMajorCompaction, startReplayingFromWAL, stopReplayingFromWAL, throttleCompaction, timeOfOldestEdit, toString, triggerMajorCompaction, upsert</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html b/testdevapidocs/org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html
index 670c764..3a42eca 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html
@@ -231,7 +231,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.HMaster</h3>
-<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkInitialized, checkServiceStarted, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createNamespace, createRpcServices, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteNamespace, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockMa
 nager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCoprocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNamespace, getNamespaces, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getRemoteInetAddress, getReplicationLoad, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getSyncReplicationReplayWALManager, getTableDescriptors, getTableRegionForRow, getTableStateManager, getUseThisHostnameInstead, g
 etWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isCatalogJanitorEnabled, isCleanerChoreEnabled, isInitialized, isInMaintenanceMode, isNormalizerOn, isSplitOrMergeEnabled, listDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyNamespace, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, transitReplicationPeerSyncReplicationState, truncateTable, updateConfigurationForQuotasObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
+<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkInitialized, checkServiceStarted, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createNamespace, createRpcServices, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteNamespace, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockMa
 nager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCoprocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNamespace, getNamespaces, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getRemoteInetAddress, getReplicationLoad, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getSyncReplicationReplayWALManager, getTableDescriptors, getTableRegionForRow, getTableStateManager, getUseThisHostnameInstead, g
 etWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isCatalogJanitorEnabled, isCleanerChoreEnabled, isInitialized, isInMaintenanceMode, isNormalizerOn, isSplitOrMergeEnabled, listDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyNamespace, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, transitReplicationPeerSyncReplicationState, truncateTable, updateConfigurationForQuotasObserver, updateReplicationPeerConfig, waitForMasterActive, waitUntilMetaOnline, waitUntilNamespaceOnli
 ne</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html b/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html
index 03c9ee7..3d5929b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html
@@ -231,7 +231,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.HMaster</h3>
-<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkInitialized, checkServiceStarted, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createNamespace, createRpcServices, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteNamespace, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockMa
 nager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCoprocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNamespace, getNamespaces, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getRemoteInetAddress, getReplicationLoad, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getSyncReplicationReplayWALManager, getTableDescriptors, getTableRegionForRow, getTableStateManager, getUseThisHostnameInstead, g
 etWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isCatalogJanitorEnabled, isCleanerChoreEnabled, isInitialized, isInMaintenanceMode, isNormalizerOn, isSplitOrMergeEnabled, listDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyNamespace, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, transitReplicationPeerSyncReplicationState, truncateTable, updateConfigurationForQuotasObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
+<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkInitialized, checkServiceStarted, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createNamespace, createRpcServices, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteNamespace, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockMa
 nager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCoprocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNamespace, getNamespaces, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getRemoteInetAddress, getReplicationLoad, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getSyncReplicationReplayWALManager, getTableDescriptors, getTableRegionForRow, getTableStateManager, getUseThisHostnameInstead, g
 etWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isCatalogJanitorEnabled, isCleanerChoreEnabled, isInitialized, isInMaintenanceMode, isNormalizerOn, isSplitOrMergeEnabled, listDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyNamespace, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, transitReplicationPeerSyncReplicationState, truncateTable, updateConfigurationForQuotasObserver, updateReplicationPeerConfig, waitForMasterActive, waitUntilMetaOnline, waitUntilNamespaceOnli
 ne</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/master/TestShutdownBackupMaster.MockHMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/TestShutdownBackupMaster.MockHMaster.html b/testdevapidocs/org/apache/hadoop/hbase/master/TestShutdownBackupMaster.MockHMaster.html
index 397ed5f..8fbfa94 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/TestShutdownBackupMaster.MockHMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/TestShutdownBackupMaster.MockHMaster.html
@@ -230,7 +230,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.HMaster</h3>
-<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkInitialized, checkServiceStarted, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createNamespace, createRpcServices, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteNamespace, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockMa
 nager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCoprocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNamespace, getNamespaces, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getRemoteInetAddress, getReplicationLoad, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getSyncReplicationReplayWALManager, getTableDescriptors, getTableRegionForRow, getTableStateManager, getUseThisHostnameInstead, g
 etWalProcedureStore, getZooKeeper, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isCatalogJanitorEnabled, isCleanerChoreEnabled, isInitialized, isInMaintenanceMode, isNormalizerOn, isSplitOrMergeEnabled, listDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyNamespace, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, transitReplicationPeerSyncReplicationState, truncateTable, updateConfigurationForQuotasObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
+<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkInitialized, checkServiceStarted, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createNamespace, createRpcServices, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteNamespace, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockMa
 nager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCoprocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNamespace, getNamespaces, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getRemoteInetAddress, getReplicationLoad, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getSyncReplicationReplayWALManager, getTableDescriptors, getTableRegionForRow, getTableStateManager, getUseThisHostnameInstead, g
 etWalProcedureStore, getZooKeeper, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isCatalogJanitorEnabled, isCleanerChoreEnabled, isInitialized, isInMaintenanceMode, isNormalizerOn, isSplitOrMergeEnabled, listDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyNamespace, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, transitReplicationPeerSyncReplicationState, truncateTable, updateConfigurationForQuotasObserver, updateReplicationPeerConfig, waitForMasterActive, waitUntilMetaOnline, waitUntilNamespaceOnline</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">


[17/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html
index 460238a..508fc27 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.html
@@ -269,7 +269,7 @@
 <span class="sourceLineNo">261</span>      TableStateManager tsm = env.getMasterServices().getTableStateManager();<a name="line.261"></a>
 <span class="sourceLineNo">262</span>      TableState ts = tsm.getTableState(tableName);<a name="line.262"></a>
 <span class="sourceLineNo">263</span>      if (!ts.isEnabled()) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        LOG.info("Not ENABLED skipping {}", this);<a name="line.264"></a>
+<span class="sourceLineNo">264</span>        LOG.info("Not ENABLED, state={}, skipping disable; {}", ts.getState(), this);<a name="line.264"></a>
 <span class="sourceLineNo">265</span>        setFailure("master-disable-table", new TableNotEnabledException(ts.toString()));<a name="line.265"></a>
 <span class="sourceLineNo">266</span>        canTableBeDisabled = false;<a name="line.266"></a>
 <span class="sourceLineNo">267</span>      }<a name="line.267"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html
index 95b7624..a87bdc6 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/procedure/EnableTableProcedure.html
@@ -339,7 +339,7 @@
 <span class="sourceLineNo">331</span>      TableStateManager tsm = env.getMasterServices().getTableStateManager();<a name="line.331"></a>
 <span class="sourceLineNo">332</span>      TableState ts = tsm.getTableState(tableName);<a name="line.332"></a>
 <span class="sourceLineNo">333</span>      if(!ts.isDisabled()){<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        LOG.info("Not DISABLED tableState=" + ts + "; skipping enable");<a name="line.334"></a>
+<span class="sourceLineNo">334</span>        LOG.info("Not DISABLED tableState={}; skipping enable; {}", ts.getState(), this);<a name="line.334"></a>
 <span class="sourceLineNo">335</span>        setFailure("master-enable-table", new TableNotDisabledException(ts.toString()));<a name="line.335"></a>
 <span class="sourceLineNo">336</span>        canTableBeEnabled = false;<a name="line.336"></a>
 <span class="sourceLineNo">337</span>      }<a name="line.337"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html
index e074a8c..8cc5add 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html
@@ -722,172 +722,172 @@
 <span class="sourceLineNo">714</span>      "hbase.regionserver.kerberos.principal", host);<a name="line.714"></a>
 <span class="sourceLineNo">715</span>  }<a name="line.715"></a>
 <span class="sourceLineNo">716</span><a name="line.716"></a>
-<span class="sourceLineNo">717</span>  protected void waitForMasterActive() {<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
-<span class="sourceLineNo">719</span><a name="line.719"></a>
-<span class="sourceLineNo">720</span>  protected String getProcessName() {<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    return REGIONSERVER;<a name="line.721"></a>
-<span class="sourceLineNo">722</span>  }<a name="line.722"></a>
+<span class="sourceLineNo">717</span><a name="line.717"></a>
+<span class="sourceLineNo">718</span>  /**<a name="line.718"></a>
+<span class="sourceLineNo">719</span>   * Wait for an active Master.<a name="line.719"></a>
+<span class="sourceLineNo">720</span>   * See override in Master superclass for how it is used.<a name="line.720"></a>
+<span class="sourceLineNo">721</span>   */<a name="line.721"></a>
+<span class="sourceLineNo">722</span>  protected void waitForMasterActive() {}<a name="line.722"></a>
 <span class="sourceLineNo">723</span><a name="line.723"></a>
-<span class="sourceLineNo">724</span>  protected boolean canCreateBaseZNode() {<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    return this.masterless;<a name="line.725"></a>
+<span class="sourceLineNo">724</span>  protected String getProcessName() {<a name="line.724"></a>
+<span class="sourceLineNo">725</span>    return REGIONSERVER;<a name="line.725"></a>
 <span class="sourceLineNo">726</span>  }<a name="line.726"></a>
 <span class="sourceLineNo">727</span><a name="line.727"></a>
-<span class="sourceLineNo">728</span>  protected boolean canUpdateTableDescriptor() {<a name="line.728"></a>
-<span class="sourceLineNo">729</span>    return false;<a name="line.729"></a>
+<span class="sourceLineNo">728</span>  protected boolean canCreateBaseZNode() {<a name="line.728"></a>
+<span class="sourceLineNo">729</span>    return this.masterless;<a name="line.729"></a>
 <span class="sourceLineNo">730</span>  }<a name="line.730"></a>
 <span class="sourceLineNo">731</span><a name="line.731"></a>
-<span class="sourceLineNo">732</span>  protected RSRpcServices createRpcServices() throws IOException {<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    return new RSRpcServices(this);<a name="line.733"></a>
+<span class="sourceLineNo">732</span>  protected boolean canUpdateTableDescriptor() {<a name="line.732"></a>
+<span class="sourceLineNo">733</span>    return false;<a name="line.733"></a>
 <span class="sourceLineNo">734</span>  }<a name="line.734"></a>
 <span class="sourceLineNo">735</span><a name="line.735"></a>
-<span class="sourceLineNo">736</span>  protected void configureInfoServer() {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    infoServer.addServlet("rs-status", "/rs-status", RSStatusServlet.class);<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    infoServer.setAttribute(REGIONSERVER, this);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>  }<a name="line.739"></a>
-<span class="sourceLineNo">740</span><a name="line.740"></a>
-<span class="sourceLineNo">741</span>  protected Class&lt;? extends HttpServlet&gt; getDumpServlet() {<a name="line.741"></a>
-<span class="sourceLineNo">742</span>    return RSDumpServlet.class;<a name="line.742"></a>
+<span class="sourceLineNo">736</span>  protected RSRpcServices createRpcServices() throws IOException {<a name="line.736"></a>
+<span class="sourceLineNo">737</span>    return new RSRpcServices(this);<a name="line.737"></a>
+<span class="sourceLineNo">738</span>  }<a name="line.738"></a>
+<span class="sourceLineNo">739</span><a name="line.739"></a>
+<span class="sourceLineNo">740</span>  protected void configureInfoServer() {<a name="line.740"></a>
+<span class="sourceLineNo">741</span>    infoServer.addServlet("rs-status", "/rs-status", RSStatusServlet.class);<a name="line.741"></a>
+<span class="sourceLineNo">742</span>    infoServer.setAttribute(REGIONSERVER, this);<a name="line.742"></a>
 <span class="sourceLineNo">743</span>  }<a name="line.743"></a>
 <span class="sourceLineNo">744</span><a name="line.744"></a>
-<span class="sourceLineNo">745</span>  @Override<a name="line.745"></a>
-<span class="sourceLineNo">746</span>  public boolean registerService(com.google.protobuf.Service instance) {<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    /*<a name="line.747"></a>
-<span class="sourceLineNo">748</span>     * No stacking of instances is allowed for a single executorService name<a name="line.748"></a>
-<span class="sourceLineNo">749</span>     */<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    com.google.protobuf.Descriptors.ServiceDescriptor serviceDesc =<a name="line.750"></a>
-<span class="sourceLineNo">751</span>        instance.getDescriptorForType();<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    String serviceName = CoprocessorRpcUtils.getServiceName(serviceDesc);<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    if (coprocessorServiceHandlers.containsKey(serviceName)) {<a name="line.753"></a>
-<span class="sourceLineNo">754</span>      LOG.error("Coprocessor executorService " + serviceName<a name="line.754"></a>
-<span class="sourceLineNo">755</span>          + " already registered, rejecting request from " + instance);<a name="line.755"></a>
-<span class="sourceLineNo">756</span>      return false;<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    }<a name="line.757"></a>
-<span class="sourceLineNo">758</span><a name="line.758"></a>
-<span class="sourceLineNo">759</span>    coprocessorServiceHandlers.put(serviceName, instance);<a name="line.759"></a>
-<span class="sourceLineNo">760</span>    if (LOG.isDebugEnabled()) {<a name="line.760"></a>
-<span class="sourceLineNo">761</span>      LOG.debug("Registered regionserver coprocessor executorService: executorService=" + serviceName);<a name="line.761"></a>
-<span class="sourceLineNo">762</span>    }<a name="line.762"></a>
-<span class="sourceLineNo">763</span>    return true;<a name="line.763"></a>
-<span class="sourceLineNo">764</span>  }<a name="line.764"></a>
-<span class="sourceLineNo">765</span><a name="line.765"></a>
-<span class="sourceLineNo">766</span>  /**<a name="line.766"></a>
-<span class="sourceLineNo">767</span>   * Create a 'smarter' Connection, one that is capable of by-passing RPC if the request is to<a name="line.767"></a>
-<span class="sourceLineNo">768</span>   * the local server; i.e. a short-circuit Connection. Safe to use going to local or remote<a name="line.768"></a>
-<span class="sourceLineNo">769</span>   * server. Create this instance in a method can be intercepted and mocked in tests.<a name="line.769"></a>
-<span class="sourceLineNo">770</span>   * @throws IOException<a name="line.770"></a>
-<span class="sourceLineNo">771</span>   */<a name="line.771"></a>
-<span class="sourceLineNo">772</span>  @VisibleForTesting<a name="line.772"></a>
-<span class="sourceLineNo">773</span>  protected ClusterConnection createClusterConnection() throws IOException {<a name="line.773"></a>
-<span class="sourceLineNo">774</span>    Configuration conf = this.conf;<a name="line.774"></a>
-<span class="sourceLineNo">775</span>    if (conf.get(HConstants.CLIENT_ZOOKEEPER_QUORUM) != null) {<a name="line.775"></a>
-<span class="sourceLineNo">776</span>      // Use server ZK cluster for server-issued connections, so we clone<a name="line.776"></a>
-<span class="sourceLineNo">777</span>      // the conf and unset the client ZK related properties<a name="line.777"></a>
-<span class="sourceLineNo">778</span>      conf = new Configuration(this.conf);<a name="line.778"></a>
-<span class="sourceLineNo">779</span>      conf.unset(HConstants.CLIENT_ZOOKEEPER_QUORUM);<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    }<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    // Create a cluster connection that when appropriate, can short-circuit and go directly to the<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    // local server if the request is to the local server bypassing RPC. Can be used for both local<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    // and remote invocations.<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    return ConnectionUtils.createShortCircuitConnection(conf, null, userProvider.getCurrent(),<a name="line.784"></a>
-<span class="sourceLineNo">785</span>      serverName, rpcServices, rpcServices);<a name="line.785"></a>
-<span class="sourceLineNo">786</span>  }<a name="line.786"></a>
-<span class="sourceLineNo">787</span><a name="line.787"></a>
-<span class="sourceLineNo">788</span>  /**<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * Run test on configured codecs to make sure supporting libs are in place.<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   * @param c<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   * @throws IOException<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   */<a name="line.792"></a>
-<span class="sourceLineNo">793</span>  private static void checkCodecs(final Configuration c) throws IOException {<a name="line.793"></a>
-<span class="sourceLineNo">794</span>    // check to see if the codec list is available:<a name="line.794"></a>
-<span class="sourceLineNo">795</span>    String [] codecs = c.getStrings("hbase.regionserver.codecs", (String[])null);<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    if (codecs == null) return;<a name="line.796"></a>
-<span class="sourceLineNo">797</span>    for (String codec : codecs) {<a name="line.797"></a>
-<span class="sourceLineNo">798</span>      if (!CompressionTest.testCompression(codec)) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>        throw new IOException("Compression codec " + codec +<a name="line.799"></a>
-<span class="sourceLineNo">800</span>          " not supported, aborting RS construction");<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      }<a name="line.801"></a>
-<span class="sourceLineNo">802</span>    }<a name="line.802"></a>
-<span class="sourceLineNo">803</span>  }<a name="line.803"></a>
-<span class="sourceLineNo">804</span><a name="line.804"></a>
-<span class="sourceLineNo">805</span>  public String getClusterId() {<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    return this.clusterId;<a name="line.806"></a>
+<span class="sourceLineNo">745</span>  protected Class&lt;? extends HttpServlet&gt; getDumpServlet() {<a name="line.745"></a>
+<span class="sourceLineNo">746</span>    return RSDumpServlet.class;<a name="line.746"></a>
+<span class="sourceLineNo">747</span>  }<a name="line.747"></a>
+<span class="sourceLineNo">748</span><a name="line.748"></a>
+<span class="sourceLineNo">749</span>  @Override<a name="line.749"></a>
+<span class="sourceLineNo">750</span>  public boolean registerService(com.google.protobuf.Service instance) {<a name="line.750"></a>
+<span class="sourceLineNo">751</span>    /*<a name="line.751"></a>
+<span class="sourceLineNo">752</span>     * No stacking of instances is allowed for a single executorService name<a name="line.752"></a>
+<span class="sourceLineNo">753</span>     */<a name="line.753"></a>
+<span class="sourceLineNo">754</span>    com.google.protobuf.Descriptors.ServiceDescriptor serviceDesc =<a name="line.754"></a>
+<span class="sourceLineNo">755</span>        instance.getDescriptorForType();<a name="line.755"></a>
+<span class="sourceLineNo">756</span>    String serviceName = CoprocessorRpcUtils.getServiceName(serviceDesc);<a name="line.756"></a>
+<span class="sourceLineNo">757</span>    if (coprocessorServiceHandlers.containsKey(serviceName)) {<a name="line.757"></a>
+<span class="sourceLineNo">758</span>      LOG.error("Coprocessor executorService " + serviceName<a name="line.758"></a>
+<span class="sourceLineNo">759</span>          + " already registered, rejecting request from " + instance);<a name="line.759"></a>
+<span class="sourceLineNo">760</span>      return false;<a name="line.760"></a>
+<span class="sourceLineNo">761</span>    }<a name="line.761"></a>
+<span class="sourceLineNo">762</span><a name="line.762"></a>
+<span class="sourceLineNo">763</span>    coprocessorServiceHandlers.put(serviceName, instance);<a name="line.763"></a>
+<span class="sourceLineNo">764</span>    if (LOG.isDebugEnabled()) {<a name="line.764"></a>
+<span class="sourceLineNo">765</span>      LOG.debug("Registered regionserver coprocessor executorService: executorService=" + serviceName);<a name="line.765"></a>
+<span class="sourceLineNo">766</span>    }<a name="line.766"></a>
+<span class="sourceLineNo">767</span>    return true;<a name="line.767"></a>
+<span class="sourceLineNo">768</span>  }<a name="line.768"></a>
+<span class="sourceLineNo">769</span><a name="line.769"></a>
+<span class="sourceLineNo">770</span>  /**<a name="line.770"></a>
+<span class="sourceLineNo">771</span>   * Create a 'smarter' Connection, one that is capable of by-passing RPC if the request is to<a name="line.771"></a>
+<span class="sourceLineNo">772</span>   * the local server; i.e. a short-circuit Connection. Safe to use going to local or remote<a name="line.772"></a>
+<span class="sourceLineNo">773</span>   * server. Create this instance in a method can be intercepted and mocked in tests.<a name="line.773"></a>
+<span class="sourceLineNo">774</span>   * @throws IOException<a name="line.774"></a>
+<span class="sourceLineNo">775</span>   */<a name="line.775"></a>
+<span class="sourceLineNo">776</span>  @VisibleForTesting<a name="line.776"></a>
+<span class="sourceLineNo">777</span>  protected ClusterConnection createClusterConnection() throws IOException {<a name="line.777"></a>
+<span class="sourceLineNo">778</span>    Configuration conf = this.conf;<a name="line.778"></a>
+<span class="sourceLineNo">779</span>    if (conf.get(HConstants.CLIENT_ZOOKEEPER_QUORUM) != null) {<a name="line.779"></a>
+<span class="sourceLineNo">780</span>      // Use server ZK cluster for server-issued connections, so we clone<a name="line.780"></a>
+<span class="sourceLineNo">781</span>      // the conf and unset the client ZK related properties<a name="line.781"></a>
+<span class="sourceLineNo">782</span>      conf = new Configuration(this.conf);<a name="line.782"></a>
+<span class="sourceLineNo">783</span>      conf.unset(HConstants.CLIENT_ZOOKEEPER_QUORUM);<a name="line.783"></a>
+<span class="sourceLineNo">784</span>    }<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    // Create a cluster connection that when appropriate, can short-circuit and go directly to the<a name="line.785"></a>
+<span class="sourceLineNo">786</span>    // local server if the request is to the local server bypassing RPC. Can be used for both local<a name="line.786"></a>
+<span class="sourceLineNo">787</span>    // and remote invocations.<a name="line.787"></a>
+<span class="sourceLineNo">788</span>    return ConnectionUtils.createShortCircuitConnection(conf, null, userProvider.getCurrent(),<a name="line.788"></a>
+<span class="sourceLineNo">789</span>      serverName, rpcServices, rpcServices);<a name="line.789"></a>
+<span class="sourceLineNo">790</span>  }<a name="line.790"></a>
+<span class="sourceLineNo">791</span><a name="line.791"></a>
+<span class="sourceLineNo">792</span>  /**<a name="line.792"></a>
+<span class="sourceLineNo">793</span>   * Run test on configured codecs to make sure supporting libs are in place.<a name="line.793"></a>
+<span class="sourceLineNo">794</span>   * @param c<a name="line.794"></a>
+<span class="sourceLineNo">795</span>   * @throws IOException<a name="line.795"></a>
+<span class="sourceLineNo">796</span>   */<a name="line.796"></a>
+<span class="sourceLineNo">797</span>  private static void checkCodecs(final Configuration c) throws IOException {<a name="line.797"></a>
+<span class="sourceLineNo">798</span>    // check to see if the codec list is available:<a name="line.798"></a>
+<span class="sourceLineNo">799</span>    String [] codecs = c.getStrings("hbase.regionserver.codecs", (String[])null);<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    if (codecs == null) return;<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    for (String codec : codecs) {<a name="line.801"></a>
+<span class="sourceLineNo">802</span>      if (!CompressionTest.testCompression(codec)) {<a name="line.802"></a>
+<span class="sourceLineNo">803</span>        throw new IOException("Compression codec " + codec +<a name="line.803"></a>
+<span class="sourceLineNo">804</span>          " not supported, aborting RS construction");<a name="line.804"></a>
+<span class="sourceLineNo">805</span>      }<a name="line.805"></a>
+<span class="sourceLineNo">806</span>    }<a name="line.806"></a>
 <span class="sourceLineNo">807</span>  }<a name="line.807"></a>
 <span class="sourceLineNo">808</span><a name="line.808"></a>
-<span class="sourceLineNo">809</span>  /**<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * Setup our cluster connection if not already initialized.<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   * @throws IOException<a name="line.811"></a>
-<span class="sourceLineNo">812</span>   */<a name="line.812"></a>
-<span class="sourceLineNo">813</span>  protected synchronized void setupClusterConnection() throws IOException {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    if (clusterConnection == null) {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>      clusterConnection = createClusterConnection();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      metaTableLocator = new MetaTableLocator();<a name="line.816"></a>
-<span class="sourceLineNo">817</span>    }<a name="line.817"></a>
-<span class="sourceLineNo">818</span>  }<a name="line.818"></a>
-<span class="sourceLineNo">819</span><a name="line.819"></a>
-<span class="sourceLineNo">820</span>  /**<a name="line.820"></a>
-<span class="sourceLineNo">821</span>   * All initialization needed before we go register with Master.&lt;br&gt;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>   * Do bare minimum. Do bulk of initializations AFTER we've connected to the Master.&lt;br&gt;<a name="line.822"></a>
-<span class="sourceLineNo">823</span>   * In here we just put up the RpcServer, setup Connection, and ZooKeeper.<a name="line.823"></a>
-<span class="sourceLineNo">824</span>   */<a name="line.824"></a>
-<span class="sourceLineNo">825</span>  private void preRegistrationInitialization() {<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    try {<a name="line.826"></a>
-<span class="sourceLineNo">827</span>      initializeZooKeeper();<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      setupClusterConnection();<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      // Setup RPC client for master communication<a name="line.829"></a>
-<span class="sourceLineNo">830</span>      this.rpcClient = RpcClientFactory.createClient(conf, clusterId, new InetSocketAddress(<a name="line.830"></a>
-<span class="sourceLineNo">831</span>          this.rpcServices.isa.getAddress(), 0), clusterConnection.getConnectionMetrics());<a name="line.831"></a>
-<span class="sourceLineNo">832</span>    } catch (Throwable t) {<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      // Call stop if error or process will stick around for ever since server<a name="line.833"></a>
-<span class="sourceLineNo">834</span>      // puts up non-daemon threads.<a name="line.834"></a>
-<span class="sourceLineNo">835</span>      this.rpcServices.stop();<a name="line.835"></a>
-<span class="sourceLineNo">836</span>      abort("Initialization of RS failed.  Hence aborting RS.", t);<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    }<a name="line.837"></a>
-<span class="sourceLineNo">838</span>  }<a name="line.838"></a>
-<span class="sourceLineNo">839</span><a name="line.839"></a>
-<span class="sourceLineNo">840</span>  /**<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * Bring up connection to zk ensemble and then wait until a master for this cluster and then after<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   * that, wait until cluster 'up' flag has been set. This is the order in which master does things.<a name="line.842"></a>
-<span class="sourceLineNo">843</span>   * &lt;p&gt;<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   * Finally open long-living server short-circuit connection.<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   */<a name="line.845"></a>
-<span class="sourceLineNo">846</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE",<a name="line.846"></a>
-<span class="sourceLineNo">847</span>    justification="cluster Id znode read would give us correct response")<a name="line.847"></a>
-<span class="sourceLineNo">848</span>  private void initializeZooKeeper() throws IOException, InterruptedException {<a name="line.848"></a>
-<span class="sourceLineNo">849</span>    // Nothing to do in here if no Master in the mix.<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    if (this.masterless) {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      return;<a name="line.851"></a>
-<span class="sourceLineNo">852</span>    }<a name="line.852"></a>
-<span class="sourceLineNo">853</span><a name="line.853"></a>
-<span class="sourceLineNo">854</span>    // Create the master address tracker, register with zk, and start it.  Then<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    // block until a master is available.  No point in starting up if no master<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    // running.<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    blockAndCheckIfStopped(this.masterAddressTracker);<a name="line.857"></a>
-<span class="sourceLineNo">858</span><a name="line.858"></a>
-<span class="sourceLineNo">859</span>    // Wait on cluster being up.  Master will set this flag up in zookeeper<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    // when ready.<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    blockAndCheckIfStopped(this.clusterStatusTracker);<a name="line.861"></a>
+<span class="sourceLineNo">809</span>  public String getClusterId() {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>    return this.clusterId;<a name="line.810"></a>
+<span class="sourceLineNo">811</span>  }<a name="line.811"></a>
+<span class="sourceLineNo">812</span><a name="line.812"></a>
+<span class="sourceLineNo">813</span>  /**<a name="line.813"></a>
+<span class="sourceLineNo">814</span>   * Setup our cluster connection if not already initialized.<a name="line.814"></a>
+<span class="sourceLineNo">815</span>   * @throws IOException<a name="line.815"></a>
+<span class="sourceLineNo">816</span>   */<a name="line.816"></a>
+<span class="sourceLineNo">817</span>  protected synchronized void setupClusterConnection() throws IOException {<a name="line.817"></a>
+<span class="sourceLineNo">818</span>    if (clusterConnection == null) {<a name="line.818"></a>
+<span class="sourceLineNo">819</span>      clusterConnection = createClusterConnection();<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      metaTableLocator = new MetaTableLocator();<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    }<a name="line.821"></a>
+<span class="sourceLineNo">822</span>  }<a name="line.822"></a>
+<span class="sourceLineNo">823</span><a name="line.823"></a>
+<span class="sourceLineNo">824</span>  /**<a name="line.824"></a>
+<span class="sourceLineNo">825</span>   * All initialization needed before we go register with Master.&lt;br&gt;<a name="line.825"></a>
+<span class="sourceLineNo">826</span>   * Do bare minimum. Do bulk of initializations AFTER we've connected to the Master.&lt;br&gt;<a name="line.826"></a>
+<span class="sourceLineNo">827</span>   * In here we just put up the RpcServer, setup Connection, and ZooKeeper.<a name="line.827"></a>
+<span class="sourceLineNo">828</span>   */<a name="line.828"></a>
+<span class="sourceLineNo">829</span>  private void preRegistrationInitialization() {<a name="line.829"></a>
+<span class="sourceLineNo">830</span>    try {<a name="line.830"></a>
+<span class="sourceLineNo">831</span>      initializeZooKeeper();<a name="line.831"></a>
+<span class="sourceLineNo">832</span>      setupClusterConnection();<a name="line.832"></a>
+<span class="sourceLineNo">833</span>      // Setup RPC client for master communication<a name="line.833"></a>
+<span class="sourceLineNo">834</span>      this.rpcClient = RpcClientFactory.createClient(conf, clusterId, new InetSocketAddress(<a name="line.834"></a>
+<span class="sourceLineNo">835</span>          this.rpcServices.isa.getAddress(), 0), clusterConnection.getConnectionMetrics());<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    } catch (Throwable t) {<a name="line.836"></a>
+<span class="sourceLineNo">837</span>      // Call stop if error or process will stick around for ever since server<a name="line.837"></a>
+<span class="sourceLineNo">838</span>      // puts up non-daemon threads.<a name="line.838"></a>
+<span class="sourceLineNo">839</span>      this.rpcServices.stop();<a name="line.839"></a>
+<span class="sourceLineNo">840</span>      abort("Initialization of RS failed.  Hence aborting RS.", t);<a name="line.840"></a>
+<span class="sourceLineNo">841</span>    }<a name="line.841"></a>
+<span class="sourceLineNo">842</span>  }<a name="line.842"></a>
+<span class="sourceLineNo">843</span><a name="line.843"></a>
+<span class="sourceLineNo">844</span>  /**<a name="line.844"></a>
+<span class="sourceLineNo">845</span>   * Bring up connection to zk ensemble and then wait until a master for this cluster and then after<a name="line.845"></a>
+<span class="sourceLineNo">846</span>   * that, wait until cluster 'up' flag has been set. This is the order in which master does things.<a name="line.846"></a>
+<span class="sourceLineNo">847</span>   * &lt;p&gt;<a name="line.847"></a>
+<span class="sourceLineNo">848</span>   * Finally open long-living server short-circuit connection.<a name="line.848"></a>
+<span class="sourceLineNo">849</span>   */<a name="line.849"></a>
+<span class="sourceLineNo">850</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE",<a name="line.850"></a>
+<span class="sourceLineNo">851</span>    justification="cluster Id znode read would give us correct response")<a name="line.851"></a>
+<span class="sourceLineNo">852</span>  private void initializeZooKeeper() throws IOException, InterruptedException {<a name="line.852"></a>
+<span class="sourceLineNo">853</span>    // Nothing to do in here if no Master in the mix.<a name="line.853"></a>
+<span class="sourceLineNo">854</span>    if (this.masterless) {<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      return;<a name="line.855"></a>
+<span class="sourceLineNo">856</span>    }<a name="line.856"></a>
+<span class="sourceLineNo">857</span><a name="line.857"></a>
+<span class="sourceLineNo">858</span>    // Create the master address tracker, register with zk, and start it.  Then<a name="line.858"></a>
+<span class="sourceLineNo">859</span>    // block until a master is available.  No point in starting up if no master<a name="line.859"></a>
+<span class="sourceLineNo">860</span>    // running.<a name="line.860"></a>
+<span class="sourceLineNo">861</span>    blockAndCheckIfStopped(this.masterAddressTracker);<a name="line.861"></a>
 <span class="sourceLineNo">862</span><a name="line.862"></a>
-<span class="sourceLineNo">863</span>    // If we are HMaster then the cluster id should have already been set.<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    if (clusterId == null) {<a name="line.864"></a>
-<span class="sourceLineNo">865</span>      // Retrieve clusterId<a name="line.865"></a>
-<span class="sourceLineNo">866</span>      // Since cluster status is now up<a name="line.866"></a>
-<span class="sourceLineNo">867</span>      // ID should have already been set by HMaster<a name="line.867"></a>
-<span class="sourceLineNo">868</span>      try {<a name="line.868"></a>
-<span class="sourceLineNo">869</span>        clusterId = ZKClusterId.readClusterIdZNode(this.zooKeeper);<a name="line.869"></a>
-<span class="sourceLineNo">870</span>        if (clusterId == null) {<a name="line.870"></a>
-<span class="sourceLineNo">871</span>          this.abort("Cluster ID has not been set");<a name="line.871"></a>
-<span class="sourceLineNo">872</span>        }<a name="line.872"></a>
-<span class="sourceLineNo">873</span>        LOG.info("ClusterId : " + clusterId);<a name="line.873"></a>
-<span class="sourceLineNo">874</span>      } catch (KeeperException e) {<a name="line.874"></a>
-<span class="sourceLineNo">875</span>        this.abort("Failed to retrieve Cluster ID", e);<a name="line.875"></a>
-<span class="sourceLineNo">876</span>      }<a name="line.876"></a>
-<span class="sourceLineNo">877</span>    }<a name="line.877"></a>
-<span class="sourceLineNo">878</span><a name="line.878"></a>
-<span class="sourceLineNo">879</span>    // In case colocated master, wait here till it's active.<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    // So backup masters won't start as regionservers.<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    // This is to avoid showing backup masters as regionservers<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    // in master web UI, or assigning any region to them.<a name="line.882"></a>
+<span class="sourceLineNo">863</span>    // Wait on cluster being up.  Master will set this flag up in zookeeper<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    // when ready.<a name="line.864"></a>
+<span class="sourceLineNo">865</span>    blockAndCheckIfStopped(this.clusterStatusTracker);<a name="line.865"></a>
+<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">867</span>    // If we are HMaster then the cluster id should have already been set.<a name="line.867"></a>
+<span class="sourceLineNo">868</span>    if (clusterId == null) {<a name="line.868"></a>
+<span class="sourceLineNo">869</span>      // Retrieve clusterId<a name="line.869"></a>
+<span class="sourceLineNo">870</span>      // Since cluster status is now up<a name="line.870"></a>
+<span class="sourceLineNo">871</span>      // ID should have already been set by HMaster<a name="line.871"></a>
+<span class="sourceLineNo">872</span>      try {<a name="line.872"></a>
+<span class="sourceLineNo">873</span>        clusterId = ZKClusterId.readClusterIdZNode(this.zooKeeper);<a name="line.873"></a>
+<span class="sourceLineNo">874</span>        if (clusterId == null) {<a name="line.874"></a>
+<span class="sourceLineNo">875</span>          this.abort("Cluster ID has not been set");<a name="line.875"></a>
+<span class="sourceLineNo">876</span>        }<a name="line.876"></a>
+<span class="sourceLineNo">877</span>        LOG.info("ClusterId : " + clusterId);<a name="line.877"></a>
+<span class="sourceLineNo">878</span>      } catch (KeeperException e) {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>        this.abort("Failed to retrieve Cluster ID", e);<a name="line.879"></a>
+<span class="sourceLineNo">880</span>      }<a name="line.880"></a>
+<span class="sourceLineNo">881</span>    }<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
 <span class="sourceLineNo">883</span>    waitForMasterActive();<a name="line.883"></a>
 <span class="sourceLineNo">884</span>    if (isStopped() || isAborted()) {<a name="line.884"></a>
 <span class="sourceLineNo">885</span>      return; // No need for further initialization<a name="line.885"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html
index e074a8c..8cc5add 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html
@@ -722,172 +722,172 @@
 <span class="sourceLineNo">714</span>      "hbase.regionserver.kerberos.principal", host);<a name="line.714"></a>
 <span class="sourceLineNo">715</span>  }<a name="line.715"></a>
 <span class="sourceLineNo">716</span><a name="line.716"></a>
-<span class="sourceLineNo">717</span>  protected void waitForMasterActive() {<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
-<span class="sourceLineNo">719</span><a name="line.719"></a>
-<span class="sourceLineNo">720</span>  protected String getProcessName() {<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    return REGIONSERVER;<a name="line.721"></a>
-<span class="sourceLineNo">722</span>  }<a name="line.722"></a>
+<span class="sourceLineNo">717</span><a name="line.717"></a>
+<span class="sourceLineNo">718</span>  /**<a name="line.718"></a>
+<span class="sourceLineNo">719</span>   * Wait for an active Master.<a name="line.719"></a>
+<span class="sourceLineNo">720</span>   * See override in Master superclass for how it is used.<a name="line.720"></a>
+<span class="sourceLineNo">721</span>   */<a name="line.721"></a>
+<span class="sourceLineNo">722</span>  protected void waitForMasterActive() {}<a name="line.722"></a>
 <span class="sourceLineNo">723</span><a name="line.723"></a>
-<span class="sourceLineNo">724</span>  protected boolean canCreateBaseZNode() {<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    return this.masterless;<a name="line.725"></a>
+<span class="sourceLineNo">724</span>  protected String getProcessName() {<a name="line.724"></a>
+<span class="sourceLineNo">725</span>    return REGIONSERVER;<a name="line.725"></a>
 <span class="sourceLineNo">726</span>  }<a name="line.726"></a>
 <span class="sourceLineNo">727</span><a name="line.727"></a>
-<span class="sourceLineNo">728</span>  protected boolean canUpdateTableDescriptor() {<a name="line.728"></a>
-<span class="sourceLineNo">729</span>    return false;<a name="line.729"></a>
+<span class="sourceLineNo">728</span>  protected boolean canCreateBaseZNode() {<a name="line.728"></a>
+<span class="sourceLineNo">729</span>    return this.masterless;<a name="line.729"></a>
 <span class="sourceLineNo">730</span>  }<a name="line.730"></a>
 <span class="sourceLineNo">731</span><a name="line.731"></a>
-<span class="sourceLineNo">732</span>  protected RSRpcServices createRpcServices() throws IOException {<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    return new RSRpcServices(this);<a name="line.733"></a>
+<span class="sourceLineNo">732</span>  protected boolean canUpdateTableDescriptor() {<a name="line.732"></a>
+<span class="sourceLineNo">733</span>    return false;<a name="line.733"></a>
 <span class="sourceLineNo">734</span>  }<a name="line.734"></a>
 <span class="sourceLineNo">735</span><a name="line.735"></a>
-<span class="sourceLineNo">736</span>  protected void configureInfoServer() {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    infoServer.addServlet("rs-status", "/rs-status", RSStatusServlet.class);<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    infoServer.setAttribute(REGIONSERVER, this);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>  }<a name="line.739"></a>
-<span class="sourceLineNo">740</span><a name="line.740"></a>
-<span class="sourceLineNo">741</span>  protected Class&lt;? extends HttpServlet&gt; getDumpServlet() {<a name="line.741"></a>
-<span class="sourceLineNo">742</span>    return RSDumpServlet.class;<a name="line.742"></a>
+<span class="sourceLineNo">736</span>  protected RSRpcServices createRpcServices() throws IOException {<a name="line.736"></a>
+<span class="sourceLineNo">737</span>    return new RSRpcServices(this);<a name="line.737"></a>
+<span class="sourceLineNo">738</span>  }<a name="line.738"></a>
+<span class="sourceLineNo">739</span><a name="line.739"></a>
+<span class="sourceLineNo">740</span>  protected void configureInfoServer() {<a name="line.740"></a>
+<span class="sourceLineNo">741</span>    infoServer.addServlet("rs-status", "/rs-status", RSStatusServlet.class);<a name="line.741"></a>
+<span class="sourceLineNo">742</span>    infoServer.setAttribute(REGIONSERVER, this);<a name="line.742"></a>
 <span class="sourceLineNo">743</span>  }<a name="line.743"></a>
 <span class="sourceLineNo">744</span><a name="line.744"></a>
-<span class="sourceLineNo">745</span>  @Override<a name="line.745"></a>
-<span class="sourceLineNo">746</span>  public boolean registerService(com.google.protobuf.Service instance) {<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    /*<a name="line.747"></a>
-<span class="sourceLineNo">748</span>     * No stacking of instances is allowed for a single executorService name<a name="line.748"></a>
-<span class="sourceLineNo">749</span>     */<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    com.google.protobuf.Descriptors.ServiceDescriptor serviceDesc =<a name="line.750"></a>
-<span class="sourceLineNo">751</span>        instance.getDescriptorForType();<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    String serviceName = CoprocessorRpcUtils.getServiceName(serviceDesc);<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    if (coprocessorServiceHandlers.containsKey(serviceName)) {<a name="line.753"></a>
-<span class="sourceLineNo">754</span>      LOG.error("Coprocessor executorService " + serviceName<a name="line.754"></a>
-<span class="sourceLineNo">755</span>          + " already registered, rejecting request from " + instance);<a name="line.755"></a>
-<span class="sourceLineNo">756</span>      return false;<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    }<a name="line.757"></a>
-<span class="sourceLineNo">758</span><a name="line.758"></a>
-<span class="sourceLineNo">759</span>    coprocessorServiceHandlers.put(serviceName, instance);<a name="line.759"></a>
-<span class="sourceLineNo">760</span>    if (LOG.isDebugEnabled()) {<a name="line.760"></a>
-<span class="sourceLineNo">761</span>      LOG.debug("Registered regionserver coprocessor executorService: executorService=" + serviceName);<a name="line.761"></a>
-<span class="sourceLineNo">762</span>    }<a name="line.762"></a>
-<span class="sourceLineNo">763</span>    return true;<a name="line.763"></a>
-<span class="sourceLineNo">764</span>  }<a name="line.764"></a>
-<span class="sourceLineNo">765</span><a name="line.765"></a>
-<span class="sourceLineNo">766</span>  /**<a name="line.766"></a>
-<span class="sourceLineNo">767</span>   * Create a 'smarter' Connection, one that is capable of by-passing RPC if the request is to<a name="line.767"></a>
-<span class="sourceLineNo">768</span>   * the local server; i.e. a short-circuit Connection. Safe to use going to local or remote<a name="line.768"></a>
-<span class="sourceLineNo">769</span>   * server. Create this instance in a method can be intercepted and mocked in tests.<a name="line.769"></a>
-<span class="sourceLineNo">770</span>   * @throws IOException<a name="line.770"></a>
-<span class="sourceLineNo">771</span>   */<a name="line.771"></a>
-<span class="sourceLineNo">772</span>  @VisibleForTesting<a name="line.772"></a>
-<span class="sourceLineNo">773</span>  protected ClusterConnection createClusterConnection() throws IOException {<a name="line.773"></a>
-<span class="sourceLineNo">774</span>    Configuration conf = this.conf;<a name="line.774"></a>
-<span class="sourceLineNo">775</span>    if (conf.get(HConstants.CLIENT_ZOOKEEPER_QUORUM) != null) {<a name="line.775"></a>
-<span class="sourceLineNo">776</span>      // Use server ZK cluster for server-issued connections, so we clone<a name="line.776"></a>
-<span class="sourceLineNo">777</span>      // the conf and unset the client ZK related properties<a name="line.777"></a>
-<span class="sourceLineNo">778</span>      conf = new Configuration(this.conf);<a name="line.778"></a>
-<span class="sourceLineNo">779</span>      conf.unset(HConstants.CLIENT_ZOOKEEPER_QUORUM);<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    }<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    // Create a cluster connection that when appropriate, can short-circuit and go directly to the<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    // local server if the request is to the local server bypassing RPC. Can be used for both local<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    // and remote invocations.<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    return ConnectionUtils.createShortCircuitConnection(conf, null, userProvider.getCurrent(),<a name="line.784"></a>
-<span class="sourceLineNo">785</span>      serverName, rpcServices, rpcServices);<a name="line.785"></a>
-<span class="sourceLineNo">786</span>  }<a name="line.786"></a>
-<span class="sourceLineNo">787</span><a name="line.787"></a>
-<span class="sourceLineNo">788</span>  /**<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * Run test on configured codecs to make sure supporting libs are in place.<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   * @param c<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   * @throws IOException<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   */<a name="line.792"></a>
-<span class="sourceLineNo">793</span>  private static void checkCodecs(final Configuration c) throws IOException {<a name="line.793"></a>
-<span class="sourceLineNo">794</span>    // check to see if the codec list is available:<a name="line.794"></a>
-<span class="sourceLineNo">795</span>    String [] codecs = c.getStrings("hbase.regionserver.codecs", (String[])null);<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    if (codecs == null) return;<a name="line.796"></a>
-<span class="sourceLineNo">797</span>    for (String codec : codecs) {<a name="line.797"></a>
-<span class="sourceLineNo">798</span>      if (!CompressionTest.testCompression(codec)) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>        throw new IOException("Compression codec " + codec +<a name="line.799"></a>
-<span class="sourceLineNo">800</span>          " not supported, aborting RS construction");<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      }<a name="line.801"></a>
-<span class="sourceLineNo">802</span>    }<a name="line.802"></a>
-<span class="sourceLineNo">803</span>  }<a name="line.803"></a>
-<span class="sourceLineNo">804</span><a name="line.804"></a>
-<span class="sourceLineNo">805</span>  public String getClusterId() {<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    return this.clusterId;<a name="line.806"></a>
+<span class="sourceLineNo">745</span>  protected Class&lt;? extends HttpServlet&gt; getDumpServlet() {<a name="line.745"></a>
+<span class="sourceLineNo">746</span>    return RSDumpServlet.class;<a name="line.746"></a>
+<span class="sourceLineNo">747</span>  }<a name="line.747"></a>
+<span class="sourceLineNo">748</span><a name="line.748"></a>
+<span class="sourceLineNo">749</span>  @Override<a name="line.749"></a>
+<span class="sourceLineNo">750</span>  public boolean registerService(com.google.protobuf.Service instance) {<a name="line.750"></a>
+<span class="sourceLineNo">751</span>    /*<a name="line.751"></a>
+<span class="sourceLineNo">752</span>     * No stacking of instances is allowed for a single executorService name<a name="line.752"></a>
+<span class="sourceLineNo">753</span>     */<a name="line.753"></a>
+<span class="sourceLineNo">754</span>    com.google.protobuf.Descriptors.ServiceDescriptor serviceDesc =<a name="line.754"></a>
+<span class="sourceLineNo">755</span>        instance.getDescriptorForType();<a name="line.755"></a>
+<span class="sourceLineNo">756</span>    String serviceName = CoprocessorRpcUtils.getServiceName(serviceDesc);<a name="line.756"></a>
+<span class="sourceLineNo">757</span>    if (coprocessorServiceHandlers.containsKey(serviceName)) {<a name="line.757"></a>
+<span class="sourceLineNo">758</span>      LOG.error("Coprocessor executorService " + serviceName<a name="line.758"></a>
+<span class="sourceLineNo">759</span>          + " already registered, rejecting request from " + instance);<a name="line.759"></a>
+<span class="sourceLineNo">760</span>      return false;<a name="line.760"></a>
+<span class="sourceLineNo">761</span>    }<a name="line.761"></a>
+<span class="sourceLineNo">762</span><a name="line.762"></a>
+<span class="sourceLineNo">763</span>    coprocessorServiceHandlers.put(serviceName, instance);<a name="line.763"></a>
+<span class="sourceLineNo">764</span>    if (LOG.isDebugEnabled()) {<a name="line.764"></a>
+<span class="sourceLineNo">765</span>      LOG.debug("Registered regionserver coprocessor executorService: executorService=" + serviceName);<a name="line.765"></a>
+<span class="sourceLineNo">766</span>    }<a name="line.766"></a>
+<span class="sourceLineNo">767</span>    return true;<a name="line.767"></a>
+<span class="sourceLineNo">768</span>  }<a name="line.768"></a>
+<span class="sourceLineNo">769</span><a name="line.769"></a>
+<span class="sourceLineNo">770</span>  /**<a name="line.770"></a>
+<span class="sourceLineNo">771</span>   * Create a 'smarter' Connection, one that is capable of by-passing RPC if the request is to<a name="line.771"></a>
+<span class="sourceLineNo">772</span>   * the local server; i.e. a short-circuit Connection. Safe to use going to local or remote<a name="line.772"></a>
+<span class="sourceLineNo">773</span>   * server. Create this instance in a method can be intercepted and mocked in tests.<a name="line.773"></a>
+<span class="sourceLineNo">774</span>   * @throws IOException<a name="line.774"></a>
+<span class="sourceLineNo">775</span>   */<a name="line.775"></a>
+<span class="sourceLineNo">776</span>  @VisibleForTesting<a name="line.776"></a>
+<span class="sourceLineNo">777</span>  protected ClusterConnection createClusterConnection() throws IOException {<a name="line.777"></a>
+<span class="sourceLineNo">778</span>    Configuration conf = this.conf;<a name="line.778"></a>
+<span class="sourceLineNo">779</span>    if (conf.get(HConstants.CLIENT_ZOOKEEPER_QUORUM) != null) {<a name="line.779"></a>
+<span class="sourceLineNo">780</span>      // Use server ZK cluster for server-issued connections, so we clone<a name="line.780"></a>
+<span class="sourceLineNo">781</span>      // the conf and unset the client ZK related properties<a name="line.781"></a>
+<span class="sourceLineNo">782</span>      conf = new Configuration(this.conf);<a name="line.782"></a>
+<span class="sourceLineNo">783</span>      conf.unset(HConstants.CLIENT_ZOOKEEPER_QUORUM);<a name="line.783"></a>
+<span class="sourceLineNo">784</span>    }<a name="line.784"></a>
+<span class="sourceLineNo">785</span>    // Create a cluster connection that when appropriate, can short-circuit and go directly to the<a name="line.785"></a>
+<span class="sourceLineNo">786</span>    // local server if the request is to the local server bypassing RPC. Can be used for both local<a name="line.786"></a>
+<span class="sourceLineNo">787</span>    // and remote invocations.<a name="line.787"></a>
+<span class="sourceLineNo">788</span>    return ConnectionUtils.createShortCircuitConnection(conf, null, userProvider.getCurrent(),<a name="line.788"></a>
+<span class="sourceLineNo">789</span>      serverName, rpcServices, rpcServices);<a name="line.789"></a>
+<span class="sourceLineNo">790</span>  }<a name="line.790"></a>
+<span class="sourceLineNo">791</span><a name="line.791"></a>
+<span class="sourceLineNo">792</span>  /**<a name="line.792"></a>
+<span class="sourceLineNo">793</span>   * Run test on configured codecs to make sure supporting libs are in place.<a name="line.793"></a>
+<span class="sourceLineNo">794</span>   * @param c<a name="line.794"></a>
+<span class="sourceLineNo">795</span>   * @throws IOException<a name="line.795"></a>
+<span class="sourceLineNo">796</span>   */<a name="line.796"></a>
+<span class="sourceLineNo">797</span>  private static void checkCodecs(final Configuration c) throws IOException {<a name="line.797"></a>
+<span class="sourceLineNo">798</span>    // check to see if the codec list is available:<a name="line.798"></a>
+<span class="sourceLineNo">799</span>    String [] codecs = c.getStrings("hbase.regionserver.codecs", (String[])null);<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    if (codecs == null) return;<a name="line.800"></a>
+<span class="sourceLineNo">801</span>    for (String codec : codecs) {<a name="line.801"></a>
+<span class="sourceLineNo">802</span>      if (!CompressionTest.testCompression(codec)) {<a name="line.802"></a>
+<span class="sourceLineNo">803</span>        throw new IOException("Compression codec " + codec +<a name="line.803"></a>
+<span class="sourceLineNo">804</span>          " not supported, aborting RS construction");<a name="line.804"></a>
+<span class="sourceLineNo">805</span>      }<a name="line.805"></a>
+<span class="sourceLineNo">806</span>    }<a name="line.806"></a>
 <span class="sourceLineNo">807</span>  }<a name="line.807"></a>
 <span class="sourceLineNo">808</span><a name="line.808"></a>
-<span class="sourceLineNo">809</span>  /**<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * Setup our cluster connection if not already initialized.<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   * @throws IOException<a name="line.811"></a>
-<span class="sourceLineNo">812</span>   */<a name="line.812"></a>
-<span class="sourceLineNo">813</span>  protected synchronized void setupClusterConnection() throws IOException {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    if (clusterConnection == null) {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>      clusterConnection = createClusterConnection();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      metaTableLocator = new MetaTableLocator();<a name="line.816"></a>
-<span class="sourceLineNo">817</span>    }<a name="line.817"></a>
-<span class="sourceLineNo">818</span>  }<a name="line.818"></a>
-<span class="sourceLineNo">819</span><a name="line.819"></a>
-<span class="sourceLineNo">820</span>  /**<a name="line.820"></a>
-<span class="sourceLineNo">821</span>   * All initialization needed before we go register with Master.&lt;br&gt;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>   * Do bare minimum. Do bulk of initializations AFTER we've connected to the Master.&lt;br&gt;<a name="line.822"></a>
-<span class="sourceLineNo">823</span>   * In here we just put up the RpcServer, setup Connection, and ZooKeeper.<a name="line.823"></a>
-<span class="sourceLineNo">824</span>   */<a name="line.824"></a>
-<span class="sourceLineNo">825</span>  private void preRegistrationInitialization() {<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    try {<a name="line.826"></a>
-<span class="sourceLineNo">827</span>      initializeZooKeeper();<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      setupClusterConnection();<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      // Setup RPC client for master communication<a name="line.829"></a>
-<span class="sourceLineNo">830</span>      this.rpcClient = RpcClientFactory.createClient(conf, clusterId, new InetSocketAddress(<a name="line.830"></a>
-<span class="sourceLineNo">831</span>          this.rpcServices.isa.getAddress(), 0), clusterConnection.getConnectionMetrics());<a name="line.831"></a>
-<span class="sourceLineNo">832</span>    } catch (Throwable t) {<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      // Call stop if error or process will stick around for ever since server<a name="line.833"></a>
-<span class="sourceLineNo">834</span>      // puts up non-daemon threads.<a name="line.834"></a>
-<span class="sourceLineNo">835</span>      this.rpcServices.stop();<a name="line.835"></a>
-<span class="sourceLineNo">836</span>      abort("Initialization of RS failed.  Hence aborting RS.", t);<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    }<a name="line.837"></a>
-<span class="sourceLineNo">838</span>  }<a name="line.838"></a>
-<span class="sourceLineNo">839</span><a name="line.839"></a>
-<span class="sourceLineNo">840</span>  /**<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * Bring up connection to zk ensemble and then wait until a master for this cluster and then after<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   * that, wait until cluster 'up' flag has been set. This is the order in which master does things.<a name="line.842"></a>
-<span class="sourceLineNo">843</span>   * &lt;p&gt;<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   * Finally open long-living server short-circuit connection.<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   */<a name="line.845"></a>
-<span class="sourceLineNo">846</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE",<a name="line.846"></a>
-<span class="sourceLineNo">847</span>    justification="cluster Id znode read would give us correct response")<a name="line.847"></a>
-<span class="sourceLineNo">848</span>  private void initializeZooKeeper() throws IOException, InterruptedException {<a name="line.848"></a>
-<span class="sourceLineNo">849</span>    // Nothing to do in here if no Master in the mix.<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    if (this.masterless) {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      return;<a name="line.851"></a>
-<span class="sourceLineNo">852</span>    }<a name="line.852"></a>
-<span class="sourceLineNo">853</span><a name="line.853"></a>
-<span class="sourceLineNo">854</span>    // Create the master address tracker, register with zk, and start it.  Then<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    // block until a master is available.  No point in starting up if no master<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    // running.<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    blockAndCheckIfStopped(this.masterAddressTracker);<a name="line.857"></a>
-<span class="sourceLineNo">858</span><a name="line.858"></a>
-<span class="sourceLineNo">859</span>    // Wait on cluster being up.  Master will set this flag up in zookeeper<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    // when ready.<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    blockAndCheckIfStopped(this.clusterStatusTracker);<a name="line.861"></a>
+<span class="sourceLineNo">809</span>  public String getClusterId() {<a name="line.809"></a>
+<span class="sourceLineNo">810</span>    return this.clusterId;<a name="line.810"></a>
+<span class="sourceLineNo">811</span>  }<a name="line.811"></a>
+<span class="sourceLineNo">812</span><a name="line.812"></a>
+<span class="sourceLineNo">813</span>  /**<a name="line.813"></a>
+<span class="sourceLineNo">814</span>   * Setup our cluster connection if not already initialized.<a name="line.814"></a>
+<span class="sourceLineNo">815</span>   * @throws IOException<a name="line.815"></a>
+<span class="sourceLineNo">816</span>   */<a name="line.816"></a>
+<span class="sourceLineNo">817</span>  protected synchronized void setupClusterConnection() throws IOException {<a name="line.817"></a>
+<span class="sourceLineNo">818</span>    if (clusterConnection == null) {<a name="line.818"></a>
+<span class="sourceLineNo">819</span>      clusterConnection = createClusterConnection();<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      metaTableLocator = new MetaTableLocator();<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    }<a name="line.821"></a>
+<span class="sourceLineNo">822</span>  }<a name="line.822"></a>
+<span class="sourceLineNo">823</span><a name="line.823"></a>
+<span class="sourceLineNo">824</span>  /**<a name="line.824"></a>
+<span class="sourceLineNo">825</span>   * All initialization needed before we go register with Master.&lt;br&gt;<a name="line.825"></a>
+<span class="sourceLineNo">826</span>   * Do bare minimum. Do bulk of initializations AFTER we've connected to the Master.&lt;br&gt;<a name="line.826"></a>
+<span class="sourceLineNo">827</span>   * In here we just put up the RpcServer, setup Connection, and ZooKeeper.<a name="line.827"></a>
+<span class="sourceLineNo">828</span>   */<a name="line.828"></a>
+<span class="sourceLineNo">829</span>  private void preRegistrationInitialization() {<a name="line.829"></a>
+<span class="sourceLineNo">830</span>    try {<a name="line.830"></a>
+<span class="sourceLineNo">831</span>      initializeZooKeeper();<a name="line.831"></a>
+<span class="sourceLineNo">832</span>      setupClusterConnection();<a name="line.832"></a>
+<span class="sourceLineNo">833</span>      // Setup RPC client for master communication<a name="line.833"></a>
+<span class="sourceLineNo">834</span>      this.rpcClient = RpcClientFactory.createClient(conf, clusterId, new InetSocketAddress(<a name="line.834"></a>
+<span class="sourceLineNo">835</span>          this.rpcServices.isa.getAddress(), 0), clusterConnection.getConnectionMetrics());<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    } catch (Throwable t) {<a name="line.836"></a>
+<span class="sourceLineNo">837</span>      // Call stop if error or process will stick around for ever since server<a name="line.837"></a>
+<span class="sourceLineNo">838</span>      // puts up non-daemon threads.<a name="line.838"></a>
+<span class="sourceLineNo">839</span>      this.rpcServices.stop();<a name="line.839"></a>
+<span class="sourceLineNo">840</span>      abort("Initialization of RS failed.  Hence aborting RS.", t);<a name="line.840"></a>
+<span class="sourceLineNo">841</span>    }<a name="line.841"></a>
+<span class="sourceLineNo">842</span>  }<a name="line.842"></a>
+<span class="sourceLineNo">843</span><a name="line.843"></a>
+<span class="sourceLineNo">844</span>  /**<a name="line.844"></a>
+<span class="sourceLineNo">845</span>   * Bring up connection to zk ensemble and then wait until a master for this cluster and then after<a name="line.845"></a>
+<span class="sourceLineNo">846</span>   * that, wait until cluster 'up' flag has been set. This is the order in which master does things.<a name="line.846"></a>
+<span class="sourceLineNo">847</span>   * &lt;p&gt;<a name="line.847"></a>
+<span class="sourceLineNo">848</span>   * Finally open long-living server short-circuit connection.<a name="line.848"></a>
+<span class="sourceLineNo">849</span>   */<a name="line.849"></a>
+<span class="sourceLineNo">850</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE",<a name="line.850"></a>
+<span class="sourceLineNo">851</span>    justification="cluster Id znode read would give us correct response")<a name="line.851"></a>
+<span class="sourceLineNo">852</span>  private void initializeZooKeeper() throws IOException, InterruptedException {<a name="line.852"></a>
+<span class="sourceLineNo">853</span>    // Nothing to do in here if no Master in the mix.<a name="line.853"></a>
+<span class="sourceLineNo">854</span>    if (this.masterless) {<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      return;<a name="line.855"></a>
+<span class="sourceLineNo">856</span>    }<a name="line.856"></a>
+<span class="sourceLineNo">857</span><a name="line.857"></a>
+<span class="sourceLineNo">858</span>    // Create the master address tracker, register with zk, and start it.  Then<a name="line.858"></a>
+<span class="sourceLineNo">859</span>    // block until a master is available.  No point in starting up if no master<a name="line.859"></a>
+<span class="sourceLineNo">860</span>    // running.<a name="line.860"></a>
+<span class="sourceLineNo">861</span>    blockAndCheckIfStopped(this.masterAddressTracker);<a name="line.861"></a>
 <span class="sourceLineNo">862</span><a name="line.862"></a>
-<span class="sourceLineNo">863</span>    // If we are HMaster then the cluster id should have already been set.<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    if (clusterId == null) {<a name="line.864"></a>
-<span class="sourceLineNo">865</span>      // Retrieve clusterId<a name="line.865"></a>
-<span class="sourceLineNo">866</span>      // Since cluster status is now up<a name="line.866"></a>
-<span class="sourceLineNo">867</span>      // ID should have already been set by HMaster<a name="line.867"></a>
-<span class="sourceLineNo">868</span>      try {<a name="line.868"></a>
-<span class="sourceLineNo">869</span>        clusterId = ZKClusterId.readClusterIdZNode(this.zooKeeper);<a name="line.869"></a>
-<span class="sourceLineNo">870</span>        if (clusterId == null) {<a name="line.870"></a>
-<span class="sourceLineNo">871</span>          this.abort("Cluster ID has not been set");<a name="line.871"></a>
-<span class="sourceLineNo">872</span>        }<a name="line.872"></a>
-<span class="sourceLineNo">873</span>        LOG.info("ClusterId : " + clusterId);<a name="line.873"></a>
-<span class="sourceLineNo">874</span>      } catch (KeeperException e) {<a name="line.874"></a>
-<span class="sourceLineNo">875</span>        this.abort("Failed to retrieve Cluster ID", e);<a name="line.875"></a>
-<span class="sourceLineNo">876</span>      }<a name="line.876"></a>
-<span class="sourceLineNo">877</span>    }<a name="line.877"></a>
-<span class="sourceLineNo">878</span><a name="line.878"></a>
-<span class="sourceLineNo">879</span>    // In case colocated master, wait here till it's active.<a name="line.879"></a>
-<span class="sourceLineNo">880</span>    // So backup masters won't start as regionservers.<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    // This is to avoid showing backup masters as regionservers<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    // in master web UI, or assigning any region to them.<a name="line.882"></a>
+<span class="sourceLineNo">863</span>    // Wait on cluster being up.  Master will set this flag up in zookeeper<a name="line.863"></a>
+<span class="sourceLineNo">864</span>    // when ready.<a name="line.864"></a>
+<span class="sourceLineNo">865</span>    blockAndCheckIfStopped(this.clusterStatusTracker);<a name="line.865"></a>
+<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">867</span>    // If we are HMaster then the cluster id should have already been set.<a name="line.867"></a>
+<span class="sourceLineNo">868</span>    if (clusterId == null) {<a name="line.868"></a>
+<span class="sourceLineNo">869</span>      // Retrieve clusterId<a name="line.869"></a>
+<span class="sourceLineNo">870</span>      // Since cluster status is now up<a name="line.870"></a>
+<span class="sourceLineNo">871</span>      // ID should have already been set by HMaster<a name="line.871"></a>
+<span class="sourceLineNo">872</span>      try {<a name="line.872"></a>
+<span class="sourceLineNo">873</span>        clusterId = ZKClusterId.readClusterIdZNode(this.zooKeeper);<a name="line.873"></a>
+<span class="sourceLineNo">874</span>        if (clusterId == null) {<a name="line.874"></a>
+<span class="sourceLineNo">875</span>          this.abort("Cluster ID has not been set");<a name="line.875"></a>
+<span class="sourceLineNo">876</span>        }<a name="line.876"></a>
+<span class="sourceLineNo">877</span>        LOG.info("ClusterId : " + clusterId);<a name="line.877"></a>
+<span class="sourceLineNo">878</span>      } catch (KeeperException e) {<a name="line.878"></a>
+<span class="sourceLineNo">879</span>        this.abort("Failed to retrieve Cluster ID", e);<a name="line.879"></a>
+<span class="sourceLineNo">880</span>      }<a name="line.880"></a>
+<span class="sourceLineNo">881</span>    }<a name="line.881"></a>
+<span class="sourceLineNo">882</span><a name="line.882"></a>
 <span class="sourceLineNo">883</span>    waitForMasterActive();<a name="line.883"></a>
 <span class="sourceLineNo">884</span>    if (isStopped() || isAborted()) {<a name="line.884"></a>
 <span class="sourceLineNo">885</span>      return; // No need for further initialization<a name="line.885"></a>


[07/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
index 0281dfc..fb26734 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
@@ -246,304 +246,308 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html" title="class in org.apache.hadoop.hbase.regionserver">TestClearRegionBlockCache</a></td>
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html" title="class in org.apache.hadoop.hbase.regionserver">TestCleanupCompactedFileOnRegionClose</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html" title="class in org.apache.hadoop.hbase.regionserver">TestClearRegionBlockCache</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClusterId.html" title="class in org.apache.hadoop.hbase.regionserver">TestClusterId</a></td>
 <td class="colLast">
 <div class="block">Test metrics incremented on region server operations.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestColumnSeeking.html" title="class in org.apache.hadoop.hbase.regionserver">TestColumnSeeking</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactingMemStore</a></td>
 <td class="colLast">
 <div class="block">compacted memstore test case</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.MyCompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactingMemStore.MyCompactingMemStore</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactingToCellFlatMapMemStore</a></td>
 <td class="colLast">
 <div class="block">compacted memstore test case</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompaction</a></td>
 <td class="colLast">
 <div class="block">Test compaction framework and common functions</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompaction.DummyCompactor.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompaction.DummyCompactor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompaction.Tracker.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompaction.Tracker</a></td>
 <td class="colLast">
 <div class="block">Simple <code>CompactionLifeCycleTracker</code> on which you can wait until the requested compaction
  finishes.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompaction.WaitThroughPutController.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompaction.WaitThroughPutController</a></td>
 <td class="colLast">
 <div class="block">Simple <code>CompactionLifeCycleTracker</code> on which you can wait until the requested compaction
  finishes.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionArchiveConcurrentClose.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactionArchiveConcurrentClose</a></td>
 <td class="colLast">
 <div class="block">Tests a race condition between archiving of compacted files in CompactedHFilesDischarger chore
  and HRegion.close();</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionArchiveIOException.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactionArchiveIOException</a></td>
 <td class="colLast">
 <div class="block">Tests that archiving compacted files behaves correctly when encountering exceptions.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionFileNotFound.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactionFileNotFound</a></td>
 <td class="colLast">
 <div class="block">This class tests the scenario where a store refresh happens due to a file not found during scan,
  after a compaction but before the compacted files are archived.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactionInDeadRegionServer</a></td>
 <td class="colLast">
 <div class="block">This testcase is used to ensure that the compaction marker will fail a compaction if the RS is
  already dead.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.IgnoreYouAreDeadRS.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactionInDeadRegionServer.IgnoreYouAreDeadRS</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionLifeCycleTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactionLifeCycleTracker</a></td>
 <td class="colLast">
 <div class="block">Confirm that the function of CompactionLifeCycleTracker is OK as we do not use it in our own
  code.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionLifeCycleTracker.CompactionObserver.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactionLifeCycleTracker.CompactionObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionLifeCycleTracker.Tracker.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactionLifeCycleTracker.Tracker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactionPolicy</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionState.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactionState</a></td>
 <td class="colLast">
 <div class="block">Unit tests to test retrieving table/region compaction state</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionWithCoprocessor.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactionWithCoprocessor</a></td>
 <td class="colLast">
 <div class="block">Make sure compaction tests still pass with the preFlush and preCompact
  overridden to implement the default behavior</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactSplitThread.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactSplitThread</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompoundBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompoundBloomFilter</a></td>
 <td class="colLast">
 <div class="block">Tests writing Bloom filter blocks in the same part of the file as data
  blocks.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDataBlockEncodingTool.html" title="class in org.apache.hadoop.hbase.regionserver">TestDataBlockEncodingTool</a></td>
 <td class="colLast">
 <div class="block">Test DataBlockEncodingTool.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">TestDateTieredCompactionPolicy</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDateTieredCompactionPolicyOverflow.html" title="class in org.apache.hadoop.hbase.regionserver">TestDateTieredCompactionPolicyOverflow</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultCompactSelection.html" title="class in org.apache.hadoop.hbase.regionserver">TestDefaultCompactSelection</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestDefaultMemStore</a></td>
 <td class="colLast">
 <div class="block">memstore test case</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.ReadOwnWritesTester.html" title="class in org.apache.hadoop.hbase.regionserver">TestDefaultMemStore.ReadOwnWritesTester</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultStoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">TestDefaultStoreEngine</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultStoreEngine.DummyCompactionPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">TestDefaultStoreEngine.DummyCompactionPolicy</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultStoreEngine.DummyCompactor.html" title="class in org.apache.hadoop.hbase.regionserver">TestDefaultStoreEngine.DummyCompactor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultStoreEngine.DummyStoreFlusher.html" title="class in org.apache.hadoop.hbase.regionserver">TestDefaultStoreEngine.DummyStoreFlusher</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDeleteMobTable.html" title="class in org.apache.hadoop.hbase.regionserver">TestDeleteMobTable</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEncryptionKeyRotation.html" title="class in org.apache.hadoop.hbase.regionserver">TestEncryptionKeyRotation</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEncryptionRandomKeying.html" title="class in org.apache.hadoop.hbase.regionserver">TestEncryptionRandomKeying</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestEndToEndSplitTransaction</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.RegionChecker.html" title="class in org.apache.hadoop.hbase.regionserver">TestEndToEndSplitTransaction.RegionChecker</a></td>
 <td class="colLast">
 <div class="block">Checks regions using MetaTableAccessor and HTable methods</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEndToEndSplitTransaction.RegionSplitter.html" title="class in org.apache.hadoop.hbase.regionserver">TestEndToEndSplitTransaction.RegionSplitter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestFailedAppendAndSync.html" title="class in org.apache.hadoop.hbase.regionserver">TestFailedAppendAndSync</a></td>
 <td class="colLast">
 <div class="block">Testing sync/append failures.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestFlushLifeCycleTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TestFlushLifeCycleTracker</a></td>
 <td class="colLast">
 <div class="block">Confirm that the function of FlushLifeCycleTracker is OK as we do not use it in our own code.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestFlushLifeCycleTracker.FlushObserver.html" title="class in org.apache.hadoop.hbase.regionserver">TestFlushLifeCycleTracker.FlushObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestFlushLifeCycleTracker.Tracker.html" title="class in org.apache.hadoop.hbase.regionserver">TestFlushLifeCycleTracker.Tracker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestFlushRegionEntry.html" title="class in org.apache.hadoop.hbase.regionserver">TestFlushRegionEntry</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestFSErrorsExposed.html" title="class in org.apache.hadoop.hbase.regionserver">TestFSErrorsExposed</a></td>
 <td class="colLast">
 <div class="block">Test cases that ensure that file system level errors are bubbled up
  appropriately to clients, rather than swallowed.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestFSErrorsExposed.FaultyFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">TestFSErrorsExposed.FaultyFileSystem</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestFSErrorsExposed.FaultyInputStream.html" title="class in org.apache.hadoop.hbase.regionserver">TestFSErrorsExposed.FaultyInputStream</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestGetClosestAtOrBefore.html" title="class in org.apache.hadoop.hbase.regionserver">TestGetClosestAtOrBefore</a></td>
 <td class="colLast">
 <div class="block">TestGet is a medley of tests of get all done up as a single test.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHdfsSnapshotHRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestHdfsSnapshotHRegion</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.html" title="class in org.apache.hadoop.hbase.regionserver">TestHeapMemoryManager</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.BlockCacheStub.html" title="class in org.apache.hadoop.hbase.regionserver">TestHeapMemoryManager.BlockCacheStub</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.CustomHeapMemoryTuner.html" title="class in org.apache.hadoop.hbase.regionserver">TestHeapMemoryManager.CustomHeapMemoryTuner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.MemstoreFlusherStub.html" title="class in org.apache.hadoop.hbase.regionserver">TestHeapMemoryManager.MemstoreFlusherStub</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.RegionServerAccountingStub.html" title="class in org.apache.hadoop.hbase.regionserver">TestHeapMemoryManager.RegionServerAccountingStub</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.RegionServerStub.html" title="class in org.apache.hadoop.hbase.regionserver">TestHeapMemoryManager.RegionServerStub</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHMobStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestHMobStore</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion</a></td>
 <td class="colLast">
 <div class="block">Basic stand-alone testing of HRegion.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion.Appender</a></td>
 <td class="colLast">
 <div class="block">TestCase for append</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionForTesting.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion.HRegionForTesting</a></td>
 <td class="colLast">
 <div class="block">The same as HRegion class, the only difference is that instantiateHStore will
  create a different HStore - HStoreForTesting.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion.HRegionWithSeqId</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.HStoreForTesting.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion.HStoreForTesting</a></td>
 <td class="colLast">
 <div class="block">HStoreForTesting is merely the same as HStore, the difference is in the doCompaction method
@@ -551,392 +555,392 @@
  doesn't let hstore compaction complete.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion.Incrementer</a></td>
 <td class="colLast">
 <div class="block">TestCase for increment</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.IsFlushWALMarker.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion.IsFlushWALMarker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionFileSystem</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionFileSystem.MockFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionFileSystem.MockFileSystem</a></td>
 <td class="colLast">
 <div class="block">a mock fs which throws exception for first 3 times, and then process the call (returns the
  excepted result).</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionFileSystem.MockFileSystemForCreate.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionFileSystem.MockFileSystemForCreate</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionInfo.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionInfo</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionOnCluster.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionOnCluster</a></td>
 <td class="colLast">
 <div class="block">Tests that need to spin up a cluster testing an <code>HRegion</code>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionReplayEvents</a></td>
 <td class="colLast">
 <div class="block">Tests of HRegion methods for replaying flush, compaction, region open, etc events for secondary
  region replicas</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionServerBulkLoad</a></td>
 <td class="colLast">
 <div class="block">Tests bulk loading of HFiles and shows the atomicity or lack of atomicity of
  the region server's bullkLoad functionality.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.AtomicHFileLoader.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionServerBulkLoad.AtomicHFileLoader</a></td>
 <td class="colLast">
 <div class="block">Thread that does full scans of the table looking for any partially
  completed rows.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.AtomicScanReader.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionServerBulkLoad.AtomicScanReader</a></td>
 <td class="colLast">
 <div class="block">Thread that does full scans of the table looking for any partially
  completed rows.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.FindBulkHBaseListener.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionServerBulkLoad.FindBulkHBaseListener</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.MyObserver.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionServerBulkLoad.MyObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoadWithOldClient.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionServerBulkLoadWithOldClient</a></td>
 <td class="colLast">
 <div class="block">Tests bulk loading of HFiles with old non-secure client for backward compatibility.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoadWithOldClient.AtomicHFileLoader.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionServerBulkLoadWithOldClient.AtomicHFileLoader</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoadWithOldSecureEndpoint.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionServerBulkLoadWithOldSecureEndpoint</a></td>
 <td class="colLast">
 <div class="block">Tests bulk loading of HFiles with old secure Endpoint client for backward compatibility.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoadWithOldSecureEndpoint.AtomicHFileLoader.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionServerBulkLoadWithOldSecureEndpoint.AtomicHFileLoader</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionWithInMemoryFlush.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionWithInMemoryFlush</a></td>
 <td class="colLast">
 <div class="block">A test similar to TestHRegion, but with in-memory flush families.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStore</a></td>
 <td class="colLast">
 <div class="block">Test class for the HStore</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHStore.DummyStoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStore.DummyStoreEngine</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHStore.FaultyFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStore.FaultyFileSystem</a></td>
 <td class="colLast">
 <div class="block">Faulty file system that will fail if you write past its fault position the FIRST TIME
  only; thereafter it will succeed.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHStore.FaultyOutputStream.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStore.FaultyOutputStream</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHStore.MyCompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStore.MyCompactingMemStore</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHStore.MyCompactingMemStoreWithCustomCompactor.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStore.MyCompactingMemStoreWithCustomCompactor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHStore.MyList.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStore.MyList</a>&lt;T&gt;</td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHStore.MyMemStoreCompactor.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStore.MyMemStoreCompactor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHStore.MyStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStore.MyStore</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHStore.MyStoreHook.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStore.MyStoreHook</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHStore.MyThread.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStore.MyThread</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStoreFile</a></td>
 <td class="colLast">
 <div class="block">Test HStoreFile</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestIsDeleteFailure.html" title="class in org.apache.hadoop.hbase.regionserver">TestIsDeleteFailure</a></td>
 <td class="colLast">
 <div class="block">Test failure in ScanDeleteTracker.isDeleted when ROWCOL bloom filter
  is used during a scan with a filter.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestJoinedScanners.html" title="class in org.apache.hadoop.hbase.regionserver">TestJoinedScanners</a></td>
 <td class="colLast">
 <div class="block">Test performance improvement of joined scanners optimization:
  https://issues.apache.org/jira/browse/HBASE-5416</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestKeepDeletes.html" title="class in org.apache.hadoop.hbase.regionserver">TestKeepDeletes</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">TestKeyValueHeap</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.SeekTestScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestKeyValueHeap.SeekTestScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.TestScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestKeyValueHeap.TestScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestKeyValueScanFixture.html" title="class in org.apache.hadoop.hbase.regionserver">TestKeyValueScanFixture</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestLogRoller.html" title="class in org.apache.hadoop.hbase.regionserver">TestLogRoller</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMajorCompaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestMajorCompaction</a></td>
 <td class="colLast">
 <div class="block">Test major compactions</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMasterAddressTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TestMasterAddressTracker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMasterAddressTracker.NodeCreationListener.html" title="class in org.apache.hadoop.hbase.regionserver">TestMasterAddressTracker.NodeCreationListener</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreChunkPool.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreChunkPool</a></td>
 <td class="colLast">
 <div class="block">Test the <code>MemStoreChunkPool</code> class</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreLAB</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.AllocRecord.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreLAB.AllocRecord</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMemstoreLABWithoutPool.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemstoreLABWithoutPool</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsHeapMemoryManager.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsHeapMemoryManager</a></td>
 <td class="colLast">
 <div class="block">Unit test version of rs metrics tests.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsRegion</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsRegionServer</a></td>
 <td class="colLast">
 <div class="block">Unit test version of rs metrics tests.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegionServerSourceFactory.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsRegionServerSourceFactory</a></td>
 <td class="colLast">
 <div class="block">Test for the CompatibilitySingletonFactory and building MetricsRegionServerSource</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegionServerSourceImpl.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsRegionServerSourceImpl</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsRegionSourceImpl</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.RegionWrapperStub.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsRegionSourceImpl.RegionWrapperStub</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsTableAggregate.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsTableAggregate</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsTableLatencies.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsTableLatencies</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMetricsTableSourceImpl.html" title="class in org.apache.hadoop.hbase.regionserver">TestMetricsTableSourceImpl</a></td>
 <td class="colLast">
 <div class="block">Test for MetricsTableSourceImpl</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">TestMiniBatchOperationInProgress</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMinorCompaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestMinorCompaction</a></td>
 <td class="colLast">
 <div class="block">Test minor compactions</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMinVersions.html" title="class in org.apache.hadoop.hbase.regionserver">TestMinVersions</a></td>
 <td class="colLast">
 <div class="block">Test Minimum Versions feature (HBASE-4071).</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMobStoreCompaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestMobStoreCompaction</a></td>
 <td class="colLast">
 <div class="block">Test mob store compaction</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMobStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestMobStoreScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestMultiColumnScanner</a></td>
 <td class="colLast">
 <div class="block">Tests optimized scanning of multiple columns.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.html" title="class in org.apache.hadoop.hbase.regionserver">TestMultiLogThreshold</a></td>
 <td class="colLast">
 <div class="block">Tests logging of large batch commands via Multi.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControl.html" title="class in org.apache.hadoop.hbase.regionserver">TestMultiVersionConcurrencyControl</a></td>
 <td class="colLast">
 <div class="block">This is a hammer test that verifies MultiVersionConcurrencyControl in a
  multiple writer single reader scenario.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControl.Writer.html" title="class in org.apache.hadoop.hbase.regionserver">TestMultiVersionConcurrencyControl.Writer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiVersionConcurrencyControlBasic.html" title="class in org.apache.hadoop.hbase.regionserver">TestMultiVersionConcurrencyControlBasic</a></td>
 <td class="colLast">
 <div class="block">Very basic tests.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMutateRowsRecovery.html" title="class in org.apache.hadoop.hbase.regionserver">TestMutateRowsRecovery</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestNewVersionBehaviorFromClientSide.html" title="class in org.apache.hadoop.hbase.regionserver">TestNewVersionBehaviorFromClientSide</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestObservedExceptionsInBatch.html" title="class in org.apache.hadoop.hbase.regionserver">TestObservedExceptionsInBatch</a></td>
 <td class="colLast">
 <div class="block">Test class for <code>HRegion.ObservedExceptionsInBatch</code>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.html" title="class in org.apache.hadoop.hbase.regionserver">TestOpenSeqNumUnexpectedIncrease</a></td>
 <td class="colLast">
 <div class="block">Testcase for HBASE-20242</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestOpenSeqNumUnexpectedIncrease.MockHRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestOpenSeqNumUnexpectedIncrease.MockHRegion</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestParallelPut.html" title="class in org.apache.hadoop.hbase.regionserver">TestParallelPut</a></td>
 <td class="colLast">
 <div class="block">Testing of multiPut in parallel.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestParallelPut.Putter.html" title="class in org.apache.hadoop.hbase.regionserver">TestParallelPut.Putter</a></td>
 <td class="colLast">
 <div class="block">A thread that makes a few put calls</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestPerColumnFamilyFlush.html" title="class in org.apache.hadoop.hbase.regionserver">TestPerColumnFamilyFlush</a></td>
 <td class="colLast">
 <div class="block">This test verifies the correctness of the Per Column Family flushing strategy</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestPriorityRpc.html" title="class in org.apache.hadoop.hbase.regionserver">TestPriorityRpc</a></td>
 <td class="colLast">
 <div class="block">Tests that verify certain RPCs get a higher QoS.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestQosFunction.html" title="class in org.apache.hadoop.hbase.regionserver">TestQosFunction</a></td>
 <td class="colLast">
 <div class="block">Basic test that qos function is sort of working; i.e.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEdits</a></td>
 <td class="colLast">
 <div class="block">Tests around replay of recovered.edits content.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEditsReplayAndAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEditsReplayAndAbort</a></td>
 <td class="colLast">
 <div class="block">HBASE-21031
@@ -944,520 +948,520 @@
  And if MSLAB is used, all chunk is released too.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionFavoredNodes</a></td>
 <td class="colLast">
 <div class="block">Tests the ability to specify favored nodes for a region.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></td>
 <td class="colLast">
 <div class="block">Increments with some concurrency against a region to ensure we get the right answer.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.CrossRowCellIncrementer</a></td>
 <td class="colLast">
 <div class="block">Increments a random row's Cell <code>count</code> times.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.SingleCellIncrementer</a></td>
 <td class="colLast">
 <div class="block">Increments a single cell a bunch of times.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionInfoBuilder.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionInfoBuilder</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransactionOnCluster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransactionOnCluster.MyMaster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransactionOnCluster.MyMasterRpcServices</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMove.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMove</a></td>
 <td class="colLast">
 <div class="block">Test move fails when table disabled</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionOpen.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionOpen</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionReplicaFailover</a></td>
 <td class="colLast">
 <div class="block">Tests failover of secondary region replicas.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicas.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionReplicas</a></td>
 <td class="colLast">
 <div class="block">Tests for region replicas.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasAreDistributed.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionReplicasAreDistributed</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithModifyTable.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionReplicasWithModifyTable</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionReplicasWithRestartScenarios</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerAbort</a></td>
 <td class="colLast">
 <div class="block">Tests around regionserver shutdown and abort</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.ErrorThrowingHRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerAbort.ErrorThrowingHRegion</a></td>
 <td class="colLast">
 <div class="block">Throws an exception during store file refresh in order to trigger a regionserver abort.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerAbort.StopBlockingRegionObserver.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerAbort.StopBlockingRegionObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerAccounting.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerAccounting</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerCrashDisableWAL.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerCrashDisableWAL</a></td>
 <td class="colLast">
 <div class="block">Testcase for HBASE-20742</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerHostname.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerHostname</a></td>
 <td class="colLast">
 <div class="block">Tests for the hostname specification by region server</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerMetrics</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerNoMaster.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerNoMaster</a></td>
 <td class="colLast">
 <div class="block">Tests on the region server, without the master.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerOnlineConfigChange.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerOnlineConfigChange</a></td>
 <td class="colLast">
 <div class="block">Verify that the Online config Changes on the HRegionServer side are actually
  happening.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerReadRequestMetrics</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.ScanRegionCoprocessor.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerReadRequestMetrics.ScanRegionCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerRegionSpaceUseReport.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerRegionSpaceUseReport</a></td>
 <td class="colLast">
 <div class="block">Test class for isolated (non-cluster) tests surrounding the report
  of Region space use to the Master by RegionServers.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerReportForDuty</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.MyRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerReportForDuty.MyRegionServer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionSplitPolicy</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html" title="class in org.apache.hadoop.hbase.regionserver">TestRemoveRegionMetrics</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestResettingCounters.html" title="class in org.apache.hadoop.hbase.regionserver">TestResettingCounters</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" title="class in org.apache.hadoop.hbase.regionserver">TestReversibleScanners</a></td>
 <td class="colLast">
 <div class="block">Test cases against ReversibleKeyValueScanner</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowTooBig.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowTooBig</a></td>
 <td class="colLast">
 <div class="block">Test case to check HRS throws <code>RowTooBigException</code>
  when row size exceeds configured limits.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRpcSchedulerFactory.html" title="class in org.apache.hadoop.hbase.regionserver">TestRpcSchedulerFactory</a></td>
 <td class="colLast">
 <div class="block">A silly test that does nothing but make sure an rpcscheduler factory makes what it says
  it is going to make.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html" title="class in org.apache.hadoop.hbase.regionserver">TestRSKilledWhenInitializing</a></td>
 <td class="colLast">
 <div class="block">Tests that a regionserver that dies after reporting for duty gets removed
  from list of online regions.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.RegisterAndDieRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRSKilledWhenInitializing.RegisterAndDieRegionServer</a></td>
 <td class="colLast">
 <div class="block">A RegionServer that reports for duty and then immediately dies if it is the first to receive
  the response to a reportForDuty.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSStatusServlet.html" title="class in org.apache.hadoop.hbase.regionserver">TestRSStatusServlet</a></td>
 <td class="colLast">
 <div class="block">Tests for the region server status page and its template.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanner</a></td>
 <td class="colLast">
 <div class="block">Test of a long-lived scanner validating as we go.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages</a></td>
 <td class="colLast">
 <div class="block">Here we test to make sure that scans return the expected Results when the server is sending the
  Client heartbeat messages.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatHRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatHRegion</a></td>
 <td class="colLast">
 <div class="block">Custom HRegion class that instantiates <code>RegionScanner</code>s with configurable sleep times
  between fetches of row Results and/or column family cells.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatHRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatHRegionServer</a></td>
 <td class="colLast">
 <div class="block">Custom HRegionServer instance that instantiates <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatRPCServices.html" title="class in org.apache.hadoop.hbase.regionserver"><code>TestScannerHeartbeatMessages.HeartbeatRPCServices</code></a> in place of
  <code>RSRpcServices</code> to allow us to toggle support for heartbeat messages</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatKVHeap.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatKVHeap</a></td>
 <td class="colLast">
 <div class="block">Custom KV Heap that can be configured to sleep/wait in between retrievals of column family
  cells.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatRegionScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatRegionScanner</a></td>
 <td class="colLast">
 <div class="block">Custom RegionScanner that can be configured to sleep between retrievals of row Results and/or
  column family cells</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatReversedKVHeap.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatReversedKVHeap</a></td>
 <td class="colLast">
 <div class="block">Custom reversed KV Heap that can be configured to sleep in between retrievals of column family
  cells.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatReversedRegionScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatReversedRegionScanner</a></td>
 <td class="colLast">
 <div class="block">Custom ReversedRegionScanner that can be configured to sleep between retrievals of row Results
  and/or column family cells</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatRPCServices.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatRPCServices</a></td>
 <td class="colLast">
 <div class="block">Custom RSRpcServices instance that allows heartbeat support to be toggled</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.SparseCellFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.SparseCellFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.SparseRowFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.SparseRowFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerRetriableFailure.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerRetriableFailure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerRetriableFailure.FaultyScannerObserver.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerRetriableFailure.FaultyScannerObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithBulkload.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerWithBulkload</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithCorruptHFile.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerWithCorruptHFile</a></td>
 <td class="colLast">
 <div class="block">Tests a scanner on a corrupt hfile.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithCorruptHFile.CorruptHFileCoprocessor.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerWithCorruptHFile.CorruptHFileCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanWithBloomError</a></td>
 <td class="colLast">
 <div class="block">Test a multi-column scanner when there is a Bloom filter false-positive.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSCVFWithMiniCluster.html" title="class in org.apache.hadoop.hbase.regionserver">TestSCVFWithMiniCluster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html" title="class in org.apache.hadoop.hbase.regionserver">TestSeekOptimizations</a></td>
 <td class="colLast">
 <div class="block">Test various seek optimizations for correctness and check if they are
  actually saving I/O operations.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.html" title="class in org.apache.hadoop.hbase.regionserver">TestServerCustomProtocol</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.PingHandler.html" title="class in org.apache.hadoop.hbase.regionserver">TestServerCustomProtocol.PingHandler</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerNonceManager.html" title="class in org.apache.hadoop.hbase.regionserver">TestServerNonceManager</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerNonceManager.TestRunnable.html" title="class in org.apache.hadoop.hbase.regionserver">TestServerNonceManager.TestRunnable</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSettingTimeoutOnBlockingPoint.html" title="class in org.apache.hadoop.hbase.regionserver">TestSettingTimeoutOnBlockingPoint</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSettingTimeoutOnBlockingPoint.SleepCoprocessor.html" title="class in org.apache.hadoop.hbase.regionserver">TestSettingTimeoutOnBlockingPoint.SleepCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.html" title="class in org.apache.hadoop.hbase.regionserver">TestShutdownWhileWALBroken</a></td>
 <td class="colLast">
 <div class="block">See HBASE-19929 for more details.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.MyRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestShutdownWhileWALBroken.MyRegionServer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSimpleTimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TestSimpleTimeRangeTracker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitLogWorker.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitLogWorker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitLogWorker.DummyServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitLogWorker.DummyServer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster</a></td>
 <td class="colLast">
 <div class="block">The below tests are testing split region against a running cluster</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.CustomSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.CustomSplitPolicy</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.FailingSplitMasterObserver.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.FailingSplitMasterObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMaster.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.MyMaster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMasterRpcServices.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.MyMasterRpcServices</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitWalDataLoss.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitWalDataLoss</a></td>
 <td class="colLast">
 <div class="block">Testcase for https://issues.apache.org/jira/browse/HBASE-13811</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileInfo</a></td>
 <td class="colLast">
 <div class="block">Test HStoreFile</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileRefresherChore</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.FailingHRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileRefresherChore.FailingHRegionFileSystem</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.StaleStorefileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileRefresherChore.StaleStorefileRefresherChore</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileScannerWithTagCompression.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileScannerWithTagCompression</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner.CellGridStoreScanner</a></td>
 <td class="colLast">
 <div class="block">A StoreScanner for our CELL_GRID above.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner.CellWithVersionsStoreScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.KeyValueHeapWithCount.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner.KeyValueHeapWithCount</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">TestStripeStoreEngine</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreEngine.TestStoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">TestStripeStoreEngine.TestStoreEngine</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreFileManager.html" title="class in org.apache.hadoop.hbase.regionserver">TestStripeStoreFileManager</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.html" title="class in org.apache.hadoop.hbase.regionserver">TestSwitchToStreamRead</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.MatchLastRowCellNextColFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestSwitchToStreamRead.MatchLastRowCellNextColFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.MatchLastRowCellNextRowFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestSwitchToStreamRead.MatchLastRowCellNextRowFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.MatchLastRowFilterRowFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestSwitchToStreamRead.MatchLastRowFilterRowFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSwitchToStreamRead.MatchLastRowKeyFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestSwitchToStreamRead.MatchLastRowKeyFilter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSyncTimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TestSyncTimeRangeTracker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSyncTimeRangeTracker.RandomTestData.html" title="class in org.apache.hadoop.hbase.regionserver">TestSyncTimeRangeTracker.RandomTestData</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSyncTimeRangeTracker.TrtUpdateRunnable.html" title="class in org.apache.hadoop.hbase.regionserver">TestSyncTimeRangeTracker.TrtUpdateRunnable</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTags.html" title="class in org.apache.hadoop.hbase.regionserver">TestTags</a></td>
 <td class="colLast">
 <div class="block">Class that test tags</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTags.TestCoprocessorForTags.html" title="class in org.apache.hadoop.hbase.regionserver">TestTags.TestCoprocessorForTags</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTimestampFilterSeekHint.html" title="class in org.apache.hadoop.hbase.regionserver">TestTimestampFilterSeekHint</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWalAndCompactingMemStoreFlush.html" title="class in org.apache.hadoop.hbase.regionserver">TestWalAndCompactingMemStoreFlush</a></td>
 <td class="colLast">
 <div class="block">This test verifies the correctness of the Per Column Family flushing strategy
  when part of the memstores are compacted memstores</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALLockup.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALLockup</a></td>
 <td class="colLast">
 <div class="block">Testing for lock up of FSHLog.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALLockup.DodgyFSLog.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALLockup.DodgyFSLog</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALLockup.DummyServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALLockup.DummyServer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALLockup.DummyWALActionsListener.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALLockup.DummyWALActionsListener</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALMonotonicallyIncreasingSeqId.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALMonotonicallyIncreasingSeqId</a></td>
 <td class="colLast">
 <div class="block">Test for HBASE-17471.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWideScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestWideScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/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 b75d00a..f0a06a3 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -260,7 +260,7 @@
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHStore.MyStore.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestHStore.MyStore</span></a></li>
 </ul>
 </li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.HStoreFile (implements org.apache.hadoop.hbase.regionserver.StoreFile)
+<li type="circle">org.apache.hadoop.hbase.regionserver.HStoreFile (implements org.apache.hadoop.hbase.regionserver.StoreFile, org.apache.hadoop.hbase.regionserver.StoreFileReader.Listener)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MockHStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MockHStoreFile</span></a></li>
 </ul>
@@ -415,6 +415,7 @@
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestBulkLoad.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestBulkLoad</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCacheOnWriteInSchema</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCellFlatSet.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCellFlatSet</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCleanupCompactedFileOnRegionClose</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestClearRegionBlockCache</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClusterId.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestClusterId</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestColumnSeeking.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestColumnSeeking</span></a></li>
@@ -669,9 +670,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.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.ActionType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMultiLogThreshold.ActionType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DataBlockEncodingTool.Manipulation</span></a></li>
+<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/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.Metric.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionServerReadRequestMetrics.Metric</span></a></li>
 </ul>
 </li>


[19/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html
index eecf20f..df4d2d2 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html
@@ -1218,664 +1218,665 @@
 <span class="sourceLineNo">1210</span>    long startTime = System.nanoTime();<a name="line.1210"></a>
 <span class="sourceLineNo">1211</span>    LOG.debug("Joining cluster...");<a name="line.1211"></a>
 <span class="sourceLineNo">1212</span><a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>    // Scan hbase:meta to build list of existing regions, servers, and assignment<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>    // hbase:meta is online when we get to here and TableStateManager has been started.<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>    loadMeta();<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span><a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>    while (master.getServerManager().countOfRegionServers() &lt; 1) {<a name="line.1217"></a>
-<span class="sourceLineNo">1218</span>      LOG.info("Waiting for RegionServers to join; current count={}",<a name="line.1218"></a>
-<span class="sourceLineNo">1219</span>        master.getServerManager().countOfRegionServers());<a name="line.1219"></a>
-<span class="sourceLineNo">1220</span>      Threads.sleep(250);<a name="line.1220"></a>
-<span class="sourceLineNo">1221</span>    }<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>    LOG.info("Number of RegionServers={}", master.getServerManager().countOfRegionServers());<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span><a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>    processOfflineRegions();<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span><a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>    // Start the RIT chore<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span>    master.getMasterProcedureExecutor().addChore(this.ritChore);<a name="line.1227"></a>
-<span class="sourceLineNo">1228</span><a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>    long costMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime);<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>    LOG.info("Joined the cluster in {}", StringUtils.humanTimeDiff(costMs));<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>  }<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span><a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>  // Create assign procedure for offline regions.<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>  // Just follow the old processofflineServersWithOnlineRegions method. Since now we do not need to<a name="line.1234"></a>
-<span class="sourceLineNo">1235</span>  // deal with dead server any more, we only deal with the regions in OFFLINE state in this method.<a name="line.1235"></a>
-<span class="sourceLineNo">1236</span>  // And this is a bit strange, that for new regions, we will add it in CLOSED state instead of<a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>  // OFFLINE state, and usually there will be a procedure to track them. The<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>  // processofflineServersWithOnlineRegions is a legacy from long ago, as things are going really<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>  // different now, maybe we do not need this method any more. Need to revisit later.<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span>  private void processOfflineRegions() {<a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>    List&lt;RegionInfo&gt; offlineRegions = regionStates.getRegionStates().stream()<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>      .filter(RegionState::isOffline).filter(s -&gt; isTableEnabled(s.getRegion().getTable()))<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      .map(RegionState::getRegion).collect(Collectors.toList());<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>    if (!offlineRegions.isEmpty()) {<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>      master.getMasterProcedureExecutor().submitProcedures(<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>        master.getAssignmentManager().createRoundRobinAssignProcedures(offlineRegions));<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    }<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span>  }<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span><a name="line.1249"></a>
-<span class="sourceLineNo">1250</span>  private void loadMeta() throws IOException {<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // TODO: use a thread pool<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    regionStateStore.visitMeta(new RegionStateStore.RegionStateVisitor() {<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>      @Override<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      public void visitRegionState(Result result, final RegionInfo regionInfo, final State state,<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>          final ServerName regionLocation, final ServerName lastHost, final long openSeqNum) {<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>        if (state == null &amp;&amp; regionLocation == null &amp;&amp; lastHost == null &amp;&amp;<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>            openSeqNum == SequenceId.NO_SEQUENCE_ID) {<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>          // This is a row with nothing in it.<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>          LOG.warn("Skipping empty row={}", result);<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>          return;<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>        }<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>        State localState = state;<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>        if (localState == null) {<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span>          // No region state column data in hbase:meta table! Are I doing a rolling upgrade from<a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>          // hbase1 to hbase2? Am I restoring a SNAPSHOT or otherwise adding a region to hbase:meta?<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>          // In any of these cases, state is empty. For now, presume OFFLINE but there are probably<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>          // cases where we need to probe more to be sure this correct; TODO informed by experience.<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>          LOG.info(regionInfo.getEncodedName() + " regionState=null; presuming " + State.OFFLINE);<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span><a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>          localState = State.OFFLINE;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>        }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span>        RegionStateNode regionNode = regionStates.getOrCreateRegionStateNode(regionInfo);<a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>        // Do not need to lock on regionNode, as we can make sure that before we finish loading<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>        // meta, all the related procedures can not be executed. The only exception is formeta<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>        // region related operations, but here we do not load the informations for meta region.<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>        regionNode.setState(localState);<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span>        regionNode.setLastHost(lastHost);<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>        regionNode.setRegionLocation(regionLocation);<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>        regionNode.setOpenSeqNum(openSeqNum);<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span><a name="line.1280"></a>
-<span class="sourceLineNo">1281</span>        if (localState == State.OPEN) {<a name="line.1281"></a>
-<span class="sourceLineNo">1282</span>          assert regionLocation != null : "found null region location for " + regionNode;<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span>          regionStates.addRegionToServer(regionNode);<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>        } else if (localState == State.OFFLINE || regionInfo.isOffline()) {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>          regionStates.addToOfflineRegions(regionNode);<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>        }<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span>      }<a name="line.1287"></a>
-<span class="sourceLineNo">1288</span>    });<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span><a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    // every assignment is blocked until meta is loaded.<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>    wakeMetaLoadedEvent();<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span>  }<a name="line.1292"></a>
-<span class="sourceLineNo">1293</span><a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>  /**<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>   * Used to check if the meta loading is done.<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span>   * &lt;p/&gt;<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span>   * if not we throw PleaseHoldException since we are rebuilding the RegionStates<a name="line.1297"></a>
-<span class="sourceLineNo">1298</span>   * @param hri region to check if it is already rebuild<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>   * @throws PleaseHoldException if meta has not been loaded yet<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>   */<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>  private void checkMetaLoaded(RegionInfo hri) throws PleaseHoldException {<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span>    if (!isRunning()) {<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>      throw new PleaseHoldException("AssignmentManager not running");<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>    }<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>    boolean meta = isMetaRegion(hri);<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>    boolean metaLoaded = isMetaLoaded();<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span>    if (!meta &amp;&amp; !metaLoaded) {<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>      throw new PleaseHoldException(<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>        "Master not fully online; hbase:meta=" + meta + ", metaLoaded=" + metaLoaded);<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    }<a name="line.1310"></a>
-<span class="sourceLineNo">1311</span>  }<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span><a name="line.1312"></a>
-<span class="sourceLineNo">1313</span>  // ============================================================================================<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  //  TODO: Metrics<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>  // ============================================================================================<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span>  public int getNumRegionsOpened() {<a name="line.1316"></a>
-<span class="sourceLineNo">1317</span>    // TODO: Used by TestRegionPlacement.java and assume monotonically increasing value<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span>    return 0;<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>  }<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span><a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>  public void submitServerCrash(final ServerName serverName, final boolean shouldSplitWal) {<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span>    boolean carryingMeta = isCarryingMeta(serverName);<a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>    ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec = this.master.getMasterProcedureExecutor();<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>    procExec.submitProcedure(new ServerCrashProcedure(procExec.getEnvironment(), serverName,<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>      shouldSplitWal, carryingMeta));<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>    LOG.debug("Added=" + serverName +<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span>      " to dead servers, submitted shutdown handler to be executed meta=" + carryingMeta);<a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>  }<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span><a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>  public void offlineRegion(final RegionInfo regionInfo) {<a name="line.1330"></a>
-<span class="sourceLineNo">1331</span>    // TODO used by MasterRpcServices<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span>    RegionStateNode node = regionStates.getRegionStateNode(regionInfo);<a name="line.1332"></a>
-<span class="sourceLineNo">1333</span>    if (node != null) {<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span>      node.offline();<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    }<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span>  }<a name="line.1336"></a>
-<span class="sourceLineNo">1337</span><a name="line.1337"></a>
-<span class="sourceLineNo">1338</span>  public void onlineRegion(final RegionInfo regionInfo, final ServerName serverName) {<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>    // TODO used by TestSplitTransactionOnCluster.java<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>  }<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span><a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>  public Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; getSnapShotOfAssignment(<a name="line.1342"></a>
-<span class="sourceLineNo">1343</span>      final Collection&lt;RegionInfo&gt; regions) {<a name="line.1343"></a>
-<span class="sourceLineNo">1344</span>    return regionStates.getSnapShotOfAssignment(regions);<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span>  }<a name="line.1345"></a>
-<span class="sourceLineNo">1346</span><a name="line.1346"></a>
-<span class="sourceLineNo">1347</span>  // ============================================================================================<a name="line.1347"></a>
-<span class="sourceLineNo">1348</span>  //  TODO: UTILS/HELPERS?<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span>  // ============================================================================================<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span>  /**<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span>   * Used by the client (via master) to identify if all regions have the schema updates<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span>   *<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span>   * @param tableName<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span>   * @return Pair indicating the status of the alter command (pending/total)<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span>   * @throws IOException<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>   */<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>  public Pair&lt;Integer, Integer&gt; getReopenStatus(TableName tableName) {<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span>    if (isTableDisabled(tableName)) return new Pair&lt;Integer, Integer&gt;(0, 0);<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span><a name="line.1359"></a>
-<span class="sourceLineNo">1360</span>    final List&lt;RegionState&gt; states = regionStates.getTableRegionStates(tableName);<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>    int ritCount = 0;<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>    for (RegionState regionState: states) {<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span>      if (!regionState.isOpened()) ritCount++;<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>    }<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span>    return new Pair&lt;Integer, Integer&gt;(ritCount, states.size());<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span>  }<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span><a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>  // ============================================================================================<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>  //  TODO: Region State In Transition<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>  // ============================================================================================<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>  public boolean hasRegionsInTransition() {<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>    return regionStates.hasRegionsInTransition();<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span>  }<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span><a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>  public List&lt;RegionStateNode&gt; getRegionsInTransition() {<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>    return regionStates.getRegionsInTransition();<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>  }<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span><a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>  public List&lt;RegionInfo&gt; getAssignedRegions() {<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span>    return regionStates.getAssignedRegions();<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>  }<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span><a name="line.1382"></a>
-<span class="sourceLineNo">1383</span>  public RegionInfo getRegionInfo(final byte[] regionName) {<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>    final RegionStateNode regionState = regionStates.getRegionStateNodeFromName(regionName);<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>    return regionState != null ? regionState.getRegionInfo() : null;<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>  }<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span><a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>  // ============================================================================================<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span>  //  Expected states on region state transition.<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>  //  Notice that there is expected states for transiting to OPENING state, this is because SCP.<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>  //  See the comments in regionOpening method for more details.<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>  // ============================================================================================<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>  private static final State[] STATES_EXPECTED_ON_OPEN = {<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span>    State.OPENING, // Normal case<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>    State.OPEN // Retrying<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>  };<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span><a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>  private static final State[] STATES_EXPECTED_ON_CLOSING = {<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>    State.OPEN, // Normal case<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>    State.CLOSING, // Retrying<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>    State.SPLITTING, // Offline the split parent<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>    State.MERGING // Offline the merge parents<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span>  };<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span><a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>  private static final State[] STATES_EXPECTED_ON_CLOSED = {<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>    State.CLOSING, // Normal case<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>    State.CLOSED // Retrying<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>  };<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span><a name="line.1409"></a>
-<span class="sourceLineNo">1410</span>  // This is for manually scheduled region assign, can add other states later if we find out other<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>  // usages<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>  private static final State[] STATES_EXPECTED_ON_ASSIGN = { State.CLOSED, State.OFFLINE };<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span><a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>  // We only allow unassign or move a region which is in OPEN state.<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>  private static final State[] STATES_EXPECTED_ON_UNASSIGN_OR_MOVE = { State.OPEN };<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span><a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>  // ============================================================================================<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>  //  Region Status update<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>  //  Should only be called in TransitRegionStateProcedure<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>  // ============================================================================================<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>  private void transitStateAndUpdate(RegionStateNode regionNode, RegionState.State newState,<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span>      RegionState.State... expectedStates) throws IOException {<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>    RegionState.State state = regionNode.getState();<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>    regionNode.transitionState(newState, expectedStates);<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>    boolean succ = false;<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>    try {<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>      regionStateStore.updateRegionLocation(regionNode);<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>      succ = true;<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>    } finally {<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>      if (!succ) {<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>        // revert<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>        regionNode.setState(state);<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>      }<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>    }<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>  }<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span><a name="line.1436"></a>
-<span class="sourceLineNo">1437</span>  // should be called within the synchronized block of RegionStateNode<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>  void regionOpening(RegionStateNode regionNode) throws IOException {<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span>    // As in SCP, for performance reason, there is no TRSP attached with this region, we will not<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span>    // update the region state, which means that the region could be in any state when we want to<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>    // assign it after a RS crash. So here we do not pass the expectedStates parameter.<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>    transitStateAndUpdate(regionNode, State.OPENING);<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>    regionStates.addRegionToServer(regionNode);<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span>    // update the operation count metrics<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span>    metrics.incrementOperationCounter();<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>  }<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span><a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>  // should be called within the synchronized block of RegionStateNode.<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span>  // The parameter 'giveUp' means whether we will try to open the region again, if it is true, then<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>  // we will persist the FAILED_OPEN state into hbase:meta.<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>  void regionFailedOpen(RegionStateNode regionNode, boolean giveUp) throws IOException {<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span>    RegionState.State state = regionNode.getState();<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>    ServerName regionLocation = regionNode.getRegionLocation();<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>    if (giveUp) {<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>      regionNode.setState(State.FAILED_OPEN);<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span>      regionNode.setRegionLocation(null);<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>      boolean succ = false;<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>      try {<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>        regionStateStore.updateRegionLocation(regionNode);<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>        succ = true;<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span>      } finally {<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>        if (!succ) {<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span>          // revert<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>          regionNode.setState(state);<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>          regionNode.setRegionLocation(regionLocation);<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>        }<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>      }<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>    }<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>    if (regionLocation != null) {<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>      regionStates.removeRegionFromServer(regionLocation, regionNode);<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>    }<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>  }<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span><a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>  // should be called within the synchronized block of RegionStateNode<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>  void regionOpened(RegionStateNode regionNode) throws IOException {<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span>    // TODO: OPENING Updates hbase:meta too... we need to do both here and there?<a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>    // That is a lot of hbase:meta writing.<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>    transitStateAndUpdate(regionNode, State.OPEN, STATES_EXPECTED_ON_OPEN);<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>    RegionInfo hri = regionNode.getRegionInfo();<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span>    if (isMetaRegion(hri)) {<a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>      // Usually we'd set a table ENABLED at this stage but hbase:meta is ALWAYs enabled, it<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>      // can't be disabled -- so skip the RPC (besides... enabled is managed by TableStateManager<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>      // which is backed by hbase:meta... Avoid setting ENABLED to avoid having to update state<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>      // on table that contains state.<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span>      setMetaAssigned(hri, true);<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>    }<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>    regionStates.addRegionToServer(regionNode);<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>    regionStates.removeFromFailedOpen(hri);<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>  }<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span><a name="line.1490"></a>
-<span class="sourceLineNo">1491</span>  // should be called within the synchronized block of RegionStateNode<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>  void regionClosing(RegionStateNode regionNode) throws IOException {<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>    transitStateAndUpdate(regionNode, State.CLOSING, STATES_EXPECTED_ON_CLOSING);<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span><a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>    RegionInfo hri = regionNode.getRegionInfo();<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span>    // Set meta has not initialized early. so people trying to create/edit tables will wait<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>    if (isMetaRegion(hri)) {<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>      setMetaAssigned(hri, false);<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>    }<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>    regionStates.addRegionToServer(regionNode);<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>    // update the operation count metrics<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>    metrics.incrementOperationCounter();<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span>  }<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span><a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>  // should be called within the synchronized block of RegionStateNode<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>  // The parameter 'normally' means whether we are closed cleanly, if it is true, then it means that<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>  // we are closed due to a RS crash.<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>  void regionClosed(RegionStateNode regionNode, boolean normally) throws IOException {<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>    RegionState.State state = regionNode.getState();<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>    ServerName regionLocation = regionNode.getRegionLocation();<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>    if (normally) {<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>      regionNode.transitionState(State.CLOSED, STATES_EXPECTED_ON_CLOSED);<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>    } else {<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span>      // For SCP<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>      regionNode.transitionState(State.ABNORMALLY_CLOSED);<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span>    }<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span>    regionNode.setRegionLocation(null);<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>    boolean succ = false;<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>    try {<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>      regionStateStore.updateRegionLocation(regionNode);<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>      succ = true;<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>    } finally {<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span>      if (!succ) {<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>        // revert<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span>        regionNode.setState(state);<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>        regionNode.setRegionLocation(regionLocation);<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>      }<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>    }<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>    if (regionLocation != null) {<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>      regionNode.setLastHost(regionLocation);<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>      regionStates.removeRegionFromServer(regionLocation, regionNode);<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>    }<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span>  }<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span><a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>  public void markRegionAsSplit(final RegionInfo parent, final ServerName serverName,<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>      final RegionInfo daughterA, final RegionInfo daughterB) throws IOException {<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>    // Update hbase:meta. Parent will be marked offline and split up in hbase:meta.<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span>    // The parent stays in regionStates until cleared when removed by CatalogJanitor.<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>    // Update its state in regionStates to it shows as offline and split when read<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>    // later figuring what regions are in a table and what are not: see<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>    // regionStates#getRegionsOfTable<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>    final RegionStateNode node = regionStates.getOrCreateRegionStateNode(parent);<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>    node.setState(State.SPLIT);<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>    final RegionStateNode nodeA = regionStates.getOrCreateRegionStateNode(daughterA);<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span>    nodeA.setState(State.SPLITTING_NEW);<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>    final RegionStateNode nodeB = regionStates.getOrCreateRegionStateNode(daughterB);<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span>    nodeB.setState(State.SPLITTING_NEW);<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span><a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>    regionStateStore.splitRegion(parent, daughterA, daughterB, serverName);<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span>    if (shouldAssignFavoredNodes(parent)) {<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>      List&lt;ServerName&gt; onlineServers = this.master.getServerManager().getOnlineServersList();<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>      ((FavoredNodesPromoter)getBalancer()).<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>          generateFavoredNodesForDaughter(onlineServers, parent, daughterA, daughterB);<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span>    }<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>  }<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span><a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>  /**<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>   * When called here, the merge has happened. The two merged regions have been<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>   * unassigned and the above markRegionClosed has been called on each so they have been<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>   * disassociated from a hosting Server. The merged region will be open after this call. The<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span>   * merged regions are removed from hbase:meta below&gt; Later they are deleted from the filesystem<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>   * by the catalog janitor running against hbase:meta. It notices when the merged region no<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>   * longer holds references to the old regions.<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>   */<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>  public void markRegionAsMerged(final RegionInfo child, final ServerName serverName,<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>      final RegionInfo mother, final RegionInfo father) throws IOException {<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>    final RegionStateNode node = regionStates.getOrCreateRegionStateNode(child);<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>    node.setState(State.MERGED);<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>    regionStates.deleteRegion(mother);<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>    regionStates.deleteRegion(father);<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>    regionStateStore.mergeRegions(child, mother, father, serverName);<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>    if (shouldAssignFavoredNodes(child)) {<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>      ((FavoredNodesPromoter)getBalancer()).<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>        generateFavoredNodesForMergedRegion(child, mother, father);<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>    }<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>  }<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span><a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>  /*<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>   * Favored nodes should be applied only when FavoredNodes balancer is configured and the region<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>   * belongs to a non-system table.<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>   */<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>  private boolean shouldAssignFavoredNodes(RegionInfo region) {<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>    return this.shouldAssignRegionsWithFavoredNodes &amp;&amp;<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span>        FavoredNodesManager.isFavoredNodeApplicable(region);<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>  }<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span><a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>  // ============================================================================================<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>  //  Assign Queue (Assign/Balance)<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span>  // ============================================================================================<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>  private final ArrayList&lt;RegionStateNode&gt; pendingAssignQueue = new ArrayList&lt;RegionStateNode&gt;();<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>  private final ReentrantLock assignQueueLock = new ReentrantLock();<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>  private final Condition assignQueueFullCond = assignQueueLock.newCondition();<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span><a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>  /**<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>   * Add the assign operation to the assignment queue.<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>   * The pending assignment operation will be processed,<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span>   * and each region will be assigned by a server using the balancer.<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>   */<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>  protected void queueAssign(final RegionStateNode regionNode) {<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>    regionNode.getProcedureEvent().suspend();<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span><a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>    // TODO: quick-start for meta and the other sys-tables?<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>    assignQueueLock.lock();<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>    try {<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>      pendingAssignQueue.add(regionNode);<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>      if (regionNode.isSystemTable() ||<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>          pendingAssignQueue.size() == 1 ||<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span>          pendingAssignQueue.size() &gt;= assignDispatchWaitQueueMaxSize) {<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>        assignQueueFullCond.signal();<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>      }<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>    } finally {<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span>      assignQueueLock.unlock();<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>    }<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>  }<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span><a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>  private void startAssignmentThread() {<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>    // Get Server Thread name. Sometimes the Server is mocked so may not implement HasThread.<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>    // For example, in tests.<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>    String name = master instanceof HasThread? ((HasThread)master).getName():<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>        master.getServerName().toShortString();<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span>    assignThread = new Thread(name) {<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>      @Override<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>      public void run() {<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>        while (isRunning()) {<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>          processAssignQueue();<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>        }<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>        pendingAssignQueue.clear();<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>      }<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>    };<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>    assignThread.setDaemon(true);<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>    assignThread.start();<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>  }<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span><a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>  private void stopAssignmentThread() {<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>    assignQueueSignal();<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>    try {<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>      while (assignThread.isAlive()) {<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>        assignQueueSignal();<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>        assignThread.join(250);<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>      }<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>    } catch (InterruptedException e) {<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>      LOG.warn("join interrupted", e);<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span>      Thread.currentThread().interrupt();<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>    }<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>  }<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span><a name="line.1646"></a>
-<span class="sourceLineNo">1647</span>  private void assignQueueSignal() {<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span>    assignQueueLock.lock();<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span>    try {<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span>      assignQueueFullCond.signal();<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span>    } finally {<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span>      assignQueueLock.unlock();<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span>    }<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span>  }<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span><a name="line.1655"></a>
-<span class="sourceLineNo">1656</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings("WA_AWAIT_NOT_IN_LOOP")<a name="line.1656"></a>
-<span class="sourceLineNo">1657</span>  private HashMap&lt;RegionInfo, RegionStateNode&gt; waitOnAssignQueue() {<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span>    HashMap&lt;RegionInfo, RegionStateNode&gt; regions = null;<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span><a name="line.1659"></a>
-<span class="sourceLineNo">1660</span>    assignQueueLock.lock();<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span>    try {<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span>      if (pendingAssignQueue.isEmpty() &amp;&amp; isRunning()) {<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span>        assignQueueFullCond.await();<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span>      }<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span><a name="line.1665"></a>
-<span class="sourceLineNo">1666</span>      if (!isRunning()) return null;<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span>      assignQueueFullCond.await(assignDispatchWaitMillis, TimeUnit.MILLISECONDS);<a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>      regions = new HashMap&lt;RegionInfo, RegionStateNode&gt;(pendingAssignQueue.size());<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span>      for (RegionStateNode regionNode: pendingAssignQueue) {<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span>        regions.put(regionNode.getRegionInfo(), regionNode);<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span>      }<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span>      pendingAssignQueue.clear();<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span>    } catch (InterruptedException e) {<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span>      LOG.warn("got interrupted ", e);<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span>      Thread.currentThread().interrupt();<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span>    } finally {<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span>      assignQueueLock.unlock();<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span>    }<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span>    return regions;<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span>  }<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span><a name="line.1681"></a>
-<span class="sourceLineNo">1682</span>  private void processAssignQueue() {<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span>    final HashMap&lt;RegionInfo, RegionStateNode&gt; regions = waitOnAssignQueue();<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span>    if (regions == null || regions.size() == 0 || !isRunning()) {<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span>      return;<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span>    }<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span><a name="line.1687"></a>
-<span class="sourceLineNo">1688</span>    if (LOG.isTraceEnabled()) {<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span>      LOG.trace("PROCESS ASSIGN QUEUE regionCount=" + regions.size());<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span>    }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span><a name="line.1691"></a>
-<span class="sourceLineNo">1692</span>    // TODO: Optimize balancer. pass a RegionPlan?<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span>    final HashMap&lt;RegionInfo, ServerName&gt; retainMap = new HashMap&lt;&gt;();<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span>    final List&lt;RegionInfo&gt; userHRIs = new ArrayList&lt;&gt;(regions.size());<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span>    // Regions for system tables requiring reassignment<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span>    final List&lt;RegionInfo&gt; systemHRIs = new ArrayList&lt;&gt;();<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span>    for (RegionStateNode regionStateNode: regions.values()) {<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span>      boolean sysTable = regionStateNode.isSystemTable();<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span>      final List&lt;RegionInfo&gt; hris = sysTable? systemHRIs: userHRIs;<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span>      if (regionStateNode.getRegionLocation() != null) {<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span>        retainMap.put(regionStateNode.getRegionInfo(), regionStateNode.getRegionLocation());<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span>      } else {<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span>        hris.add(regionStateNode.getRegionInfo());<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span>      }<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span>    }<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span><a name="line.1706"></a>
-<span class="sourceLineNo">1707</span>    // TODO: connect with the listener to invalidate the cache<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span><a name="line.1708"></a>
-<span class="sourceLineNo">1709</span>    // TODO use events<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span>    List&lt;ServerName&gt; servers = master.getServerManager().createDestinationServersList();<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span>    for (int i = 0; servers.size() &lt; 1; ++i) {<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span>      // Report every fourth time around this loop; try not to flood log.<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span>      if (i % 4 == 0) {<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span>        LOG.warn("No servers available; cannot place " + regions.size() + " unassigned regions.");<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>      }<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span><a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>      if (!isRunning()) {<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span>        LOG.debug("Stopped! Dropping assign of " + regions.size() + " queued regions.");<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>        return;<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span>      }<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span>      Threads.sleep(250);<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span>      servers = master.getServerManager().createDestinationServersList();<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>    }<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span><a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>    if (!systemHRIs.isEmpty()) {<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span>      // System table regions requiring reassignment are present, get region servers<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>      // not available for system table regions<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span>      final List&lt;ServerName&gt; excludeServers = getExcludedServersForSystemTable();<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>      List&lt;ServerName&gt; serversForSysTables = servers.stream()<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>          .filter(s -&gt; !excludeServers.contains(s)).collect(Collectors.toList());<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>      if (serversForSysTables.isEmpty()) {<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>        LOG.warn("Filtering old server versions and the excluded produced an empty set; " +<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span>            "instead considering all candidate servers!");<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span>      }<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span>      LOG.debug("Processing assignQueue; systemServersCount=" + serversForSysTables.size() +<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>          ", allServersCount=" + servers.size());<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>      processAssignmentPlans(regions, null, systemHRIs,<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span>          serversForSysTables.isEmpty()? servers: serversForSysTables);<a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>    }<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span><a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>    processAssignmentPlans(regions, retainMap, userHRIs, servers);<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span>  }<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span><a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>  private void processAssignmentPlans(final HashMap&lt;RegionInfo, RegionStateNode&gt; regions,<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>      final HashMap&lt;RegionInfo, ServerName&gt; retainMap, final List&lt;RegionInfo&gt; hris,<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span>      final List&lt;ServerName&gt; servers) {<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span>    boolean isTraceEnabled = LOG.isTraceEnabled();<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>    if (isTraceEnabled) {<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span>      LOG.trace("Available servers count=" + servers.size() + ": " + servers);<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span>    }<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span><a name="line.1751"></a>
-<span class="sourceLineNo">1752</span>    final LoadBalancer balancer = getBalancer();<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span>    // ask the balancer where to place regions<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span>    if (retainMap != null &amp;&amp; !retainMap.isEmpty()) {<a name="line.1754"></a>
-<span class="sourceLineNo">1755</span>      if (isTraceEnabled) {<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span>        LOG.trace("retain assign regions=" + retainMap);<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span>      }<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span>      try {<a name="line.1758"></a>
-<span class="sourceLineNo">1759</span>        acceptPlan(regions, balancer.retainAssignment(retainMap, servers));<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span>      } catch (HBaseIOException e) {<a name="line.1760"></a>
-<span class="sourceLineNo">1761</span>        LOG.warn("unable to retain assignment", e);<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span>        addToPendingAssignment(regions, retainMap.keySet());<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span>      }<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span>    }<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span><a name="line.1765"></a>
-<span class="sourceLineNo">1766</span>    // TODO: Do we need to split retain and round-robin?<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span>    // the retain seems to fallback to round-robin/random if the region is not in the map.<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span>    if (!hris.isEmpty()) {<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span>      Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span>      if (isTraceEnabled) {<a name="line.1770"></a>
-<span class="sourceLineNo">1771</span>        LOG.trace("round robin regions=" + hris);<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span>      }<a name="line.1772"></a>
-<span class="sourceLineNo">1773</span>      try {<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span>        acceptPlan(regions, balancer.roundRobinAssignment(hris, servers));<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span>      } catch (HBaseIOException e) {<a name="line.1775"></a>
-<span class="sourceLineNo">1776</span>        LOG.warn("unable to round-robin assignment", e);<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span>        addToPendingAssignment(regions, hris);<a name="line.1777"></a>
-<span class="sourceLineNo">1778</span>      }<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span>    }<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span>  }<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span><a name="line.1781"></a>
-<span class="sourceLineNo">1782</span>  private void acceptPlan(final HashMap&lt;RegionInfo, RegionStateNode&gt; regions,<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span>      final Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; plan) throws HBaseIOException {<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span>    final ProcedureEvent&lt;?&gt;[] events = new ProcedureEvent[regions.size()];<a name="line.1784"></a>
-<span class="sourceLineNo">1785</span>    final long st = System.currentTimeMillis();<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span><a name="line.1786"></a>
-<span class="sourceLineNo">1787</span>    if (plan == null) {<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span>      throw new HBaseIOException("unable to compute plans for regions=" + regions.size());<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span>    }<a name="line.1789"></a>
-<span class="sourceLineNo">1790</span><a name="line.1790"></a>
-<span class="sourceLineNo">1791</span>    if (plan.isEmpty()) return;<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span><a name="line.1792"></a>
-<span class="sourceLineNo">1793</span>    int evcount = 0;<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span>    for (Map.Entry&lt;ServerName, List&lt;RegionInfo&gt;&gt; entry: plan.entrySet()) {<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span>      final ServerName server = entry.getKey();<a name="line.1795"></a>
-<span class="sourceLineNo">1796</span>      for (RegionInfo hri: entry.getValue()) {<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span>        final RegionStateNode regionNode = regions.get(hri);<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span>        regionNode.setRegionLocation(server);<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span>        events[evcount++] = regionNode.getProcedureEvent();<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span>      }<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span>    }<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span>    ProcedureEvent.wakeEvents(getProcedureScheduler(), events);<a name="line.1802"></a>
-<span class="sourceLineNo">1803</span><a name="line.1803"></a>
-<span class="sourceLineNo">1804</span>    final long et = System.currentTimeMillis();<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span>    if (LOG.isTraceEnabled()) {<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span>      LOG.trace("ASSIGN ACCEPT " + events.length + " -&gt; " +<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span>          StringUtils.humanTimeDiff(et - st));<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span>    }<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span>  }<a name="line.1809"></a>
-<span class="sourceLineNo">1810</span><a name="line.1810"></a>
-<span class="sourceLineNo">1811</span>  private void addToPendingAssignment(final HashMap&lt;RegionInfo, RegionStateNode&gt; regions,<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span>      final Collection&lt;RegionInfo&gt; pendingRegions) {<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span>    assignQueueLock.lock();<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span>    try {<a name="line.1814"></a>
-<span class="sourceLineNo">1815</span>      for (RegionInfo hri: pendingRegions) {<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span>        pendingAssignQueue.add(regions.get(hri));<a name="line.1816"></a>
-<span class="sourceLineNo">1817</span>      }<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span>    } finally {<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span>      assignQueueLock.unlock();<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span>    }<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span>  }<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span><a name="line.1822"></a>
-<span class="sourceLineNo">1823</span>  /**<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span>   * Get a list of servers that this region cannot be assigned to.<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span>   * For system tables, we must assign them to a server with highest version.<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span>   */<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span>  public List&lt;ServerName&gt; getExcludedServersForSystemTable() {<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span>    // TODO: This should be a cached list kept by the ServerManager rather than calculated on each<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span>    // move or system region assign. The RegionServerTracker keeps list of online Servers with<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span>    // RegionServerInfo that includes Version.<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span>    List&lt;Pair&lt;ServerName, String&gt;&gt; serverList = master.getServerManager().getOnlineServersList()<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span>        .stream()<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span>        .map((s)-&gt;new Pair&lt;&gt;(s, master.getRegionServerVersion(s)))<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span>        .collect(Collectors.toList());<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span>    if (serverList.isEmpty()) {<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span>      return Collections.emptyList();<a name="line.1836"></a>
-<span class="sourceLineNo">1837</span>    }<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span>    String highestVersion = Collections.max(serverList,<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span>        (o1, o2) -&gt; VersionInfo.compareVersion(o1.getSecond(), o2.getSecond())).getSecond();<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span>    return serverList.stream()<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span>        .filter((p)-&gt;!p.getSecond().equals(highestVersion))<a name="line.1841"></a>
-<span class="sourceLineNo">1842</span>        .map(Pair::getFirst)<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span>        .collect(Collectors.toList());<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span>  }<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span><a name="line.1845"></a>
-<span class="sourceLineNo">1846</span>  // ============================================================================================<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span>  //  Server Helpers<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span>  // ============================================================================================<a name="line.1848"></a>
-<span class="sourceLineNo">1849</span>  @Override<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span>  public void serverAdded(final ServerName serverName) {<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span>  }<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span><a name="line.1852"></a>
-<span class="sourceLineNo">1853</span>  @Override<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span>  public void serverRemoved(final ServerName serverName) {<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span>    final ServerStateNode serverNode = regionStates.getServerNode(serverName);<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span>    if (serverNode == null) return;<a name="line.1856"></a>
-<span class="sourceLineNo">1857</span><a name="line.1857"></a>
-<span class="sourceLineNo">1858</span>    // just in case, wake procedures waiting for this server report<a name="line.1858"></a>
-<span class="sourceLineNo">1859</span>    wakeServerReportEvent(serverNode);<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span>  }<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span><a name="line.1861"></a>
-<span class="sourceLineNo">1862</span>  private void killRegionServer(final ServerStateNode serverNode) {<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span>    master.getServerManager().expireServer(serverNode.getServerName());<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span>  }<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span><a name="line.1865"></a>
-<span class="sourceLineNo">1866</span>  @VisibleForTesting<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span>  MasterServices getMaster() {<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span>    return master;<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span>  }<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span>}<a name="line.1870"></a>
+<span class="sourceLineNo">1213</span>    // Scan hbase:meta to build list of existing regions, servers, and assignment.<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span>    // hbase:meta is online now or will be. Inside loadMeta, we keep trying. Can't make progress<a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>    // w/o  meta.<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>    loadMeta();<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span><a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>    while (master.getServerManager().countOfRegionServers() &lt; 1) {<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>      LOG.info("Waiting for RegionServers to join; current count={}",<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>        master.getServerManager().countOfRegionServers());<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>      Threads.sleep(250);<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>    }<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>    LOG.info("Number of RegionServers={}", master.getServerManager().countOfRegionServers());<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span><a name="line.1224"></a>
+<span class="sourceLineNo">1225</span>    processOfflineRegions();<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span><a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>    // Start the RIT chore<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>    master.getMasterProcedureExecutor().addChore(this.ritChore);<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span><a name="line.1229"></a>
+<span class="sourceLineNo">1230</span>    long costMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime);<a name="line.1230"></a>
+<span class="sourceLineNo">1231</span>    LOG.info("Joined the cluster in {}", StringUtils.humanTimeDiff(costMs));<a name="line.1231"></a>
+<span class="sourceLineNo">1232</span>  }<a name="line.1232"></a>
+<span class="sourceLineNo">1233</span><a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>  // Create assign procedure for offline regions.<a name="line.1234"></a>
+<span class="sourceLineNo">1235</span>  // Just follow the old processofflineServersWithOnlineRegions method. Since now we do not need to<a name="line.1235"></a>
+<span class="sourceLineNo">1236</span>  // deal with dead server any more, we only deal with the regions in OFFLINE state in this method.<a name="line.1236"></a>
+<span class="sourceLineNo">1237</span>  // And this is a bit strange, that for new regions, we will add it in CLOSED state instead of<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>  // OFFLINE state, and usually there will be a procedure to track them. The<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>  // processofflineServersWithOnlineRegions is a legacy from long ago, as things are going really<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>  // different now, maybe we do not need this method any more. Need to revisit later.<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>  private void processOfflineRegions() {<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>    List&lt;RegionInfo&gt; offlineRegions = regionStates.getRegionStates().stream()<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>      .filter(RegionState::isOffline).filter(s -&gt; isTableEnabled(s.getRegion().getTable()))<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span>      .map(RegionState::getRegion).collect(Collectors.toList());<a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>    if (!offlineRegions.isEmpty()) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>      master.getMasterProcedureExecutor().submitProcedures(<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>        master.getAssignmentManager().createRoundRobinAssignProcedures(offlineRegions));<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>    }<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>  }<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span><a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>  private void loadMeta() throws IOException {<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>    // TODO: use a thread pool<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span>    regionStateStore.visitMeta(new RegionStateStore.RegionStateVisitor() {<a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>      @Override<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>      public void visitRegionState(Result result, final RegionInfo regionInfo, final State state,<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span>          final ServerName regionLocation, final ServerName lastHost, final long openSeqNum) {<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span>        if (state == null &amp;&amp; regionLocation == null &amp;&amp; lastHost == null &amp;&amp;<a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>            openSeqNum == SequenceId.NO_SEQUENCE_ID) {<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>          // This is a row with nothing in it.<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>          LOG.warn("Skipping empty row={}", result);<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>          return;<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>        }<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>        State localState = state;<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>        if (localState == null) {<a name="line.1264"></a>
+<span class="sourceLineNo">1265</span>          // No region state column data in hbase:meta table! Are I doing a rolling upgrade from<a name="line.1265"></a>
+<span class="sourceLineNo">1266</span>          // hbase1 to hbase2? Am I restoring a SNAPSHOT or otherwise adding a region to hbase:meta?<a name="line.1266"></a>
+<span class="sourceLineNo">1267</span>          // In any of these cases, state is empty. For now, presume OFFLINE but there are probably<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>          // cases where we need to probe more to be sure this correct; TODO informed by experience.<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>          LOG.info(regionInfo.getEncodedName() + " regionState=null; presuming " + State.OFFLINE);<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span><a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>          localState = State.OFFLINE;<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>        }<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>        RegionStateNode regionNode = regionStates.getOrCreateRegionStateNode(regionInfo);<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>        // Do not need to lock on regionNode, as we can make sure that before we finish loading<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>        // meta, all the related procedures can not be executed. The only exception is formeta<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span>        // region related operations, but here we do not load the informations for meta region.<a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>        regionNode.setState(localState);<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>        regionNode.setLastHost(lastHost);<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>        regionNode.setRegionLocation(regionLocation);<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>        regionNode.setOpenSeqNum(openSeqNum);<a name="line.1280"></a>
+<span class="sourceLineNo">1281</span><a name="line.1281"></a>
+<span class="sourceLineNo">1282</span>        if (localState == State.OPEN) {<a name="line.1282"></a>
+<span class="sourceLineNo">1283</span>          assert regionLocation != null : "found null region location for " + regionNode;<a name="line.1283"></a>
+<span class="sourceLineNo">1284</span>          regionStates.addRegionToServer(regionNode);<a name="line.1284"></a>
+<span class="sourceLineNo">1285</span>        } else if (localState == State.OFFLINE || regionInfo.isOffline()) {<a name="line.1285"></a>
+<span class="sourceLineNo">1286</span>          regionStates.addToOfflineRegions(regionNode);<a name="line.1286"></a>
+<span class="sourceLineNo">1287</span>        }<a name="line.1287"></a>
+<span class="sourceLineNo">1288</span>      }<a name="line.1288"></a>
+<span class="sourceLineNo">1289</span>    });<a name="line.1289"></a>
+<span class="sourceLineNo">1290</span><a name="line.1290"></a>
+<span class="sourceLineNo">1291</span>    // every assignment is blocked until meta is loaded.<a name="line.1291"></a>
+<span class="sourceLineNo">1292</span>    wakeMetaLoadedEvent();<a name="line.1292"></a>
+<span class="sourceLineNo">1293</span>  }<a name="line.1293"></a>
+<span class="sourceLineNo">1294</span><a name="line.1294"></a>
+<span class="sourceLineNo">1295</span>  /**<a name="line.1295"></a>
+<span class="sourceLineNo">1296</span>   * Used to check if the meta loading is done.<a name="line.1296"></a>
+<span class="sourceLineNo">1297</span>   * &lt;p/&gt;<a name="line.1297"></a>
+<span class="sourceLineNo">1298</span>   * if not we throw PleaseHoldException since we are rebuilding the RegionStates<a name="line.1298"></a>
+<span class="sourceLineNo">1299</span>   * @param hri region to check if it is already rebuild<a name="line.1299"></a>
+<span class="sourceLineNo">1300</span>   * @throws PleaseHoldException if meta has not been loaded yet<a name="line.1300"></a>
+<span class="sourceLineNo">1301</span>   */<a name="line.1301"></a>
+<span class="sourceLineNo">1302</span>  private void checkMetaLoaded(RegionInfo hri) throws PleaseHoldException {<a name="line.1302"></a>
+<span class="sourceLineNo">1303</span>    if (!isRunning()) {<a name="line.1303"></a>
+<span class="sourceLineNo">1304</span>      throw new PleaseHoldException("AssignmentManager not running");<a name="line.1304"></a>
+<span class="sourceLineNo">1305</span>    }<a name="line.1305"></a>
+<span class="sourceLineNo">1306</span>    boolean meta = isMetaRegion(hri);<a name="line.1306"></a>
+<span class="sourceLineNo">1307</span>    boolean metaLoaded = isMetaLoaded();<a name="line.1307"></a>
+<span class="sourceLineNo">1308</span>    if (!meta &amp;&amp; !metaLoaded) {<a name="line.1308"></a>
+<span class="sourceLineNo">1309</span>      throw new PleaseHoldException(<a name="line.1309"></a>
+<span class="sourceLineNo">1310</span>        "Master not fully online; hbase:meta=" + meta + ", metaLoaded=" + metaLoaded);<a name="line.1310"></a>
+<span class="sourceLineNo">1311</span>    }<a name="line.1311"></a>
+<span class="sourceLineNo">1312</span>  }<a name="line.1312"></a>
+<span class="sourceLineNo">1313</span><a name="line.1313"></a>
+<span class="sourceLineNo">1314</span>  // ============================================================================================<a name="line.1314"></a>
+<span class="sourceLineNo">1315</span>  //  TODO: Metrics<a name="line.1315"></a>
+<span class="sourceLineNo">1316</span>  // ============================================================================================<a name="line.1316"></a>
+<span class="sourceLineNo">1317</span>  public int getNumRegionsOpened() {<a name="line.1317"></a>
+<span class="sourceLineNo">1318</span>    // TODO: Used by TestRegionPlacement.java and assume monotonically increasing value<a name="line.1318"></a>
+<span class="sourceLineNo">1319</span>    return 0;<a name="line.1319"></a>
+<span class="sourceLineNo">1320</span>  }<a name="line.1320"></a>
+<span class="sourceLineNo">1321</span><a name="line.1321"></a>
+<span class="sourceLineNo">1322</span>  public void submitServerCrash(final ServerName serverName, final boolean shouldSplitWal) {<a name="line.1322"></a>
+<span class="sourceLineNo">1323</span>    boolean carryingMeta = isCarryingMeta(serverName);<a name="line.1323"></a>
+<span class="sourceLineNo">1324</span>    ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec = this.master.getMasterProcedureExecutor();<a name="line.1324"></a>
+<span class="sourceLineNo">1325</span>    procExec.submitProcedure(new ServerCrashProcedure(procExec.getEnvironment(), serverName,<a name="line.1325"></a>
+<span class="sourceLineNo">1326</span>      shouldSplitWal, carryingMeta));<a name="line.1326"></a>
+<span class="sourceLineNo">1327</span>    LOG.debug("Added=" + serverName +<a name="line.1327"></a>
+<span class="sourceLineNo">1328</span>      " to dead servers, submitted shutdown handler to be executed meta=" + carryingMeta);<a name="line.1328"></a>
+<span class="sourceLineNo">1329</span>  }<a name="line.1329"></a>
+<span class="sourceLineNo">1330</span><a name="line.1330"></a>
+<span class="sourceLineNo">1331</span>  public void offlineRegion(final RegionInfo regionInfo) {<a name="line.1331"></a>
+<span class="sourceLineNo">1332</span>    // TODO used by MasterRpcServices<a name="line.1332"></a>
+<span class="sourceLineNo">1333</span>    RegionStateNode node = regionStates.getRegionStateNode(regionInfo);<a name="line.1333"></a>
+<span class="sourceLineNo">1334</span>    if (node != null) {<a name="line.1334"></a>
+<span class="sourceLineNo">1335</span>      node.offline();<a name="line.1335"></a>
+<span class="sourceLineNo">1336</span>    }<a name="line.1336"></a>
+<span class="sourceLineNo">1337</span>  }<a name="line.1337"></a>
+<span class="sourceLineNo">1338</span><a name="line.1338"></a>
+<span class="sourceLineNo">1339</span>  public void onlineRegion(final RegionInfo regionInfo, final ServerName serverName) {<a name="line.1339"></a>
+<span class="sourceLineNo">1340</span>    // TODO used by TestSplitTransactionOnCluster.java<a name="line.1340"></a>
+<span class="sourceLineNo">1341</span>  }<a name="line.1341"></a>
+<span class="sourceLineNo">1342</span><a name="line.1342"></a>
+<span class="sourceLineNo">1343</span>  public Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; getSnapShotOfAssignment(<a name="line.1343"></a>
+<span class="sourceLineNo">1344</span>      final Collection&lt;RegionInfo&gt; regions) {<a name="line.1344"></a>
+<span class="sourceLineNo">1345</span>    return regionStates.getSnapShotOfAssignment(regions);<a name="line.1345"></a>
+<span class="sourceLineNo">1346</span>  }<a name="line.1346"></a>
+<span class="sourceLineNo">1347</span><a name="line.1347"></a>
+<span class="sourceLineNo">1348</span>  // ============================================================================================<a name="line.1348"></a>
+<span class="sourceLineNo">1349</span>  //  TODO: UTILS/HELPERS?<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span>  // ============================================================================================<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span>  /**<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span>   * Used by the client (via master) to identify if all regions have the schema updates<a name="line.1352"></a>
+<span class="sourceLineNo">1353</span>   *<a name="line.1353"></a>
+<span class="sourceLineNo">1354</span>   * @param tableName<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span>   * @return Pair indicating the status of the alter command (pending/total)<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span>   * @throws IOException<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span>   */<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span>  public Pair&lt;Integer, Integer&gt; getReopenStatus(TableName tableName) {<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span>    if (isTableDisabled(tableName)) return new Pair&lt;Integer, Integer&gt;(0, 0);<a name="line.1359"></a>
+<span class="sourceLineNo">1360</span><a name="line.1360"></a>
+<span class="sourceLineNo">1361</span>    final List&lt;RegionState&gt; states = regionStates.getTableRegionStates(tableName);<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span>    int ritCount = 0;<a name="line.1362"></a>
+<span class="sourceLineNo">1363</span>    for (RegionState regionState: states) {<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span>      if (!regionState.isOpened()) ritCount++;<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span>    }<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span>    return new Pair&lt;Integer, Integer&gt;(ritCount, states.size());<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span>  }<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span><a name="line.1368"></a>
+<span class="sourceLineNo">1369</span>  // ============================================================================================<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span>  //  TODO: Region State In Transition<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span>  // ============================================================================================<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span>  public boolean hasRegionsInTransition() {<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span>    return regionStates.hasRegionsInTransition();<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span>  }<a name="line.1374"></a>
+<span class="sourceLineNo">1375</span><a name="line.1375"></a>
+<span class="sourceLineNo">1376</span>  public List&lt;RegionStateNode&gt; getRegionsInTransition() {<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span>    return regionStates.getRegionsInTransition();<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span>  }<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span><a name="line.1379"></a>
+<span class="sourceLineNo">1380</span>  public List&lt;RegionInfo&gt; getAssignedRegions() {<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span>    return regionStates.getAssignedRegions();<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span>  }<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span><a name="line.1383"></a>
+<span class="sourceLineNo">1384</span>  public RegionInfo getRegionInfo(final byte[] regionName) {<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span>    final RegionStateNode regionState = regionStates.getRegionStateNodeFromName(regionName);<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span>    return regionState != null ? regionState.getRegionInfo() : null;<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span>  }<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span><a name="line.1388"></a>
+<span class="sourceLineNo">1389</span>  // ============================================================================================<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span>  //  Expected states on region state transition.<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span>  //  Notice that there is expected stat

<TRUNCATED>

[37/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/master/HMaster.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMaster.html b/devapidocs/org/apache/hadoop/hbase/master/HMaster.html
index 4e6d5a3..e39c24f 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMaster.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMaster.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":9,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":9,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":9,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":9,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i109"
 :10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":9,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":9,"i136":10,"i137":10,"i138":10,"i139":10,"i140":10,"i141":10,"i142":10,"i143":10,"i144":10,"i145":10,"i146":10,"i147":10,"i148":10,"i149":10,"i150":10,"i151":10,"i152":10,"i153":10,"i154":10,"i155":10,"i156":10,"i157":10,"i158":10,"i159":10,"i160":10,"i161":10,"i162":10,"i163":10,"i164":10,"i165":10,"i166":10,"i167":10,"i168":10,"i169":10,"i170":10,"i171":10,"i172":10,"i173":9};
+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":9,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":9,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":9,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":9,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i109"
 :10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":9,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":10,"i136":9,"i137":10,"i138":10,"i139":10,"i140":10,"i141":10,"i142":10,"i143":10,"i144":10,"i145":10,"i146":10,"i147":10,"i148":10,"i149":10,"i150":10,"i151":10,"i152":10,"i153":10,"i154":10,"i155":10,"i156":10,"i157":10,"i158":10,"i159":10,"i160":10,"i161":10,"i162":10,"i163":10,"i164":10,"i165":10,"i166":10,"i167":10,"i168":10,"i169":10,"i170":10,"i171":10,"i172":10,"i173":10,"i174":10,"i175":10,"i176":9};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -128,7 +128,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.LimitedPrivate(value="Tools")
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.250">HMaster</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.253">HMaster</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a></pre>
 <div class="block">HMaster is the "master server" for HBase. An HBase cluster has one active
@@ -1155,25 +1155,29 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 </td>
 </tr>
 <tr id="i127" class="rowColor">
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isRegionOnline-org.apache.hadoop.hbase.client.RegionInfo-">isRegionOnline</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;ri)</code>&nbsp;</td>
+</tr>
+<tr id="i128" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isSplitOrMergeEnabled-org.apache.hadoop.hbase.client.MasterSwitchType-">isSplitOrMergeEnabled</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client">MasterSwitchType</a>&nbsp;switchType)</code>
 <div class="block">Queries the state of the <a href="../../../../../org/apache/hadoop/hbase/master/SplitOrMergeTracker.html" title="class in org.apache.hadoop.hbase.master"><code>SplitOrMergeTracker</code></a>.</div>
 </td>
 </tr>
-<tr id="i128" class="altColor">
+<tr id="i129" class="rowColor">
 <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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listDecommissionedRegionServers--">listDecommissionedRegionServers</a></span>()</code>
 <div class="block">List region servers marked as decommissioned (previously called 'draining') to not get regions
  assigned to them.</div>
 </td>
 </tr>
-<tr id="i129" class="rowColor">
+<tr id="i130" class="altColor">
 <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="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerDescription</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listReplicationPeers-java.lang.String-">listReplicationPeers</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;regex)</code>
 <div class="block">Return a list of replication peers.</div>
 </td>
 </tr>
-<tr id="i130" class="altColor">
+<tr id="i131" class="rowColor">
 <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="../../../../../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/HMaster.html#listTableDescriptors-java.lang.String-java.lang.String-java.util.List-boolean-">listTableDescriptors</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;namespace,
                     <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;regex,
@@ -1182,13 +1186,13 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Returns the list of table descriptors that match the specified request</div>
 </td>
 </tr>
-<tr id="i131" class="rowColor">
+<tr id="i132" class="altColor">
 <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="../../../../../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/HMaster.html#listTableDescriptorsByNamespace-java.lang.String-">listTableDescriptorsByNamespace</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;name)</code>
 <div class="block">Get list of table descriptors by namespace</div>
 </td>
 </tr>
-<tr id="i132" class="altColor">
+<tr id="i133" class="rowColor">
 <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="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableNames-java.lang.String-java.lang.String-boolean-">listTableNames</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;namespace,
               <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;regex,
@@ -1196,24 +1200,24 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Returns the list of table names that match the specified request</div>
 </td>
 </tr>
-<tr id="i133" class="rowColor">
+<tr id="i134" class="altColor">
 <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="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableNamesByNamespace-java.lang.String-">listTableNamesByNamespace</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;name)</code>
 <div class="block">Get list of table names by namespace</div>
 </td>
 </tr>
-<tr id="i134" class="altColor">
+<tr id="i135" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#login-org.apache.hadoop.hbase.security.UserProvider-java.lang.String-">login</a></span>(<a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a>&nbsp;user,
      <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;host)</code>
 <div class="block">For compatibility, if failed with regionserver credentials, try the master one</div>
 </td>
 </tr>
-<tr id="i135" class="rowColor">
+<tr id="i136" class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#main-java.lang.String:A-">main</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;args)</code>&nbsp;</td>
 </tr>
-<tr id="i136" class="altColor">
+<tr id="i137" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#mergeRegions-org.apache.hadoop.hbase.client.RegionInfo:A-boolean-long-long-">mergeRegions</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regionsToMerge,
             boolean&nbsp;forcible,
@@ -1222,7 +1226,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Merge regions in a table.</div>
 </td>
 </tr>
-<tr id="i137" class="rowColor">
+<tr id="i138" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-long-long-">modifyColumn</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
             <a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;descriptor,
@@ -1231,7 +1235,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Modify the column descriptor of an existing column in an existing table</div>
 </td>
 </tr>
-<tr id="i138" class="altColor">
+<tr id="i139" class="rowColor">
 <td class="colFirst"><code>(package private) long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-long-long-">modifyNamespace</a></span>(<a href="../../../../../org/apache/hadoop/hbase/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>&nbsp;newNsDescriptor,
                long&nbsp;nonceGroup,
@@ -1239,14 +1243,14 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Modify an existing Namespace.</div>
 </td>
 </tr>
-<tr id="i139" class="rowColor">
+<tr id="i140" class="altColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyTable-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.master.HMaster.TableDescriptorGetter-long-long-">modifyTable</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/master/HMaster.TableDescriptorGetter.html" title="interface in org.apache.hadoop.hbase.master">HMaster.TableDescriptorGetter</a>&nbsp;newDescriptorGetter,
            long&nbsp;nonceGroup,
            long&nbsp;nonce)</code>&nbsp;</td>
 </tr>
-<tr id="i140" class="altColor">
+<tr id="i141" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyTable-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableDescriptor-long-long-">modifyTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
            <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;newDescriptor,
@@ -1255,22 +1259,22 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Modify the descriptor of an existing table</div>
 </td>
 </tr>
-<tr id="i141" class="rowColor">
+<tr id="i142" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#move-byte:A-byte:A-">move</a></span>(byte[]&nbsp;encodedRegionName,
     byte[]&nbsp;destServerName)</code>&nbsp;</td>
 </tr>
-<tr id="i142" class="altColor">
+<tr id="i143" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#normalizeRegions--">normalizeRegions</a></span>()</code>
 <div class="block">Perform normalization of cluster (invoked by <a href="../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizerChore.html" title="class in org.apache.hadoop.hbase.master.normalizer"><code>RegionNormalizerChore</code></a>).</div>
 </td>
 </tr>
-<tr id="i143" class="rowColor">
+<tr id="i144" class="altColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#putUpJettyServer--">putUpJettyServer</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i144" class="altColor">
+<tr id="i145" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#recommissionRegionServer-org.apache.hadoop.hbase.ServerName-java.util.List-">recommissionRegionServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;server,
                         <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;&nbsp;encodedRegionNames)</code>
@@ -1278,37 +1282,37 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
  assignments.</div>
 </td>
 </tr>
-<tr id="i145" class="rowColor">
+<tr id="i146" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#registerService-com.google.protobuf.Service-">registerService</a></span>(com.google.protobuf.Service&nbsp;instance)</code>
 <div class="block">Registers a new protocol buffer <code>Service</code> subclass as a coprocessor endpoint to be
  available for handling</div>
 </td>
 </tr>
-<tr id="i146" class="altColor">
+<tr id="i147" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#remoteProcedureCompleted-long-">remoteProcedureCompleted</a></span>(long&nbsp;procId)</code>&nbsp;</td>
 </tr>
-<tr id="i147" class="rowColor">
+<tr id="i148" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#remoteProcedureFailed-long-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">remoteProcedureFailed</a></span>(long&nbsp;procId,
                      <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 id="i148" class="altColor">
+<tr id="i149" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#removeReplicationPeer-java.lang.String-">removeReplicationPeer</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">Removes a peer and stops the replication</div>
 </td>
 </tr>
-<tr id="i149" class="rowColor">
+<tr id="i150" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionEnd-org.apache.hadoop.hbase.TableName-">reportMobCompactionEnd</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 id="i150" class="altColor">
+<tr id="i151" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionStart-org.apache.hadoop.hbase.TableName-">reportMobCompactionStart</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 id="i151" class="rowColor">
+<tr id="i152" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#requestMobCompaction-org.apache.hadoop.hbase.TableName-java.util.List-boolean-">requestMobCompaction</a></span>(<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/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&gt;&nbsp;columns,
@@ -1316,43 +1320,43 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Requests mob compaction.</div>
 </td>
 </tr>
-<tr id="i152" class="altColor">
+<tr id="i153" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#restoreSnapshot-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-long-long-boolean-">restoreSnapshot</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription&nbsp;snapshotDesc,
                long&nbsp;nonceGroup,
                long&nbsp;nonce,
                boolean&nbsp;restoreAcl)</code>&nbsp;</td>
 </tr>
-<tr id="i153" class="rowColor">
+<tr id="i154" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#run--">run</a></span>()</code>
 <div class="block">The HRegionServer sticks in this loop until closed.</div>
 </td>
 </tr>
-<tr id="i154" class="altColor">
+<tr id="i155" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#sanityCheckTableDescriptor-org.apache.hadoop.hbase.client.TableDescriptor-">sanityCheckTableDescriptor</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd)</code>
 <div class="block">Checks whether the table conforms to some sane limits, and configured
  values (compression, etc) work.</div>
 </td>
 </tr>
-<tr id="i155" class="rowColor">
+<tr id="i156" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setCatalogJanitorEnabled-boolean-">setCatalogJanitorEnabled</a></span>(boolean&nbsp;b)</code>
 <div class="block">Switch for the background CatalogJanitor thread.</div>
 </td>
 </tr>
-<tr id="i156" class="altColor">
+<tr id="i157" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setInitialized-boolean-">setInitialized</a></span>(boolean&nbsp;isInitialized)</code>&nbsp;</td>
 </tr>
-<tr id="i157" class="rowColor">
+<tr id="i158" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#shutdown--">shutdown</a></span>()</code>
 <div class="block">Shutdown the cluster.</div>
 </td>
 </tr>
-<tr id="i158" class="altColor">
+<tr id="i159" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#splitRegion-org.apache.hadoop.hbase.client.RegionInfo-byte:A-long-long-">splitRegion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
            byte[]&nbsp;splitRow,
@@ -1361,50 +1365,50 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Split a region.</div>
 </td>
 </tr>
-<tr id="i159" class="rowColor">
+<tr id="i160" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#startActiveMasterManager-int-">startActiveMasterManager</a></span>(int&nbsp;infoPort)</code>&nbsp;</td>
 </tr>
-<tr id="i160" class="altColor">
+<tr id="i161" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#startProcedureExecutor--">startProcedureExecutor</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i161" class="rowColor">
+<tr id="i162" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#startServiceThreads--">startServiceThreads</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i162" class="altColor">
+<tr id="i163" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stop-java.lang.String-">stop</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;msg)</code>
 <div class="block">Stop this service.</div>
 </td>
 </tr>
-<tr id="i163" class="rowColor">
+<tr id="i164" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopChores--">stopChores</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i164" class="altColor">
+<tr id="i165" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopMaster--">stopMaster</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i165" class="rowColor">
+<tr id="i166" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopProcedureExecutor--">stopProcedureExecutor</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i166" class="altColor">
+<tr id="i167" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopServiceThreads--">stopServiceThreads</a></span>()</code>
 <div class="block">Wait on all threads to finish.</div>
 </td>
 </tr>
-<tr id="i167" class="rowColor">
+<tr id="i168" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#transitReplicationPeerSyncReplicationState-java.lang.String-org.apache.hadoop.hbase.replication.SyncReplicationState-">transitReplicationPeerSyncReplicationState</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/SyncReplicationState.html" title="enum in org.apache.hadoop.hbase.replication">SyncReplicationState</a>&nbsp;state)</code>
 <div class="block">Set current cluster state for a synchronous replication peer.</div>
 </td>
 </tr>
-<tr id="i168" class="altColor">
+<tr id="i169" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-long-long-">truncateTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
              boolean&nbsp;preserveSplits,
@@ -1413,32 +1417,44 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Truncate a table</div>
 </td>
 </tr>
-<tr id="i169" class="rowColor">
+<tr id="i170" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#updateConfigurationForQuotasObserver-org.apache.hadoop.conf.Configuration-">updateConfigurationForQuotasObserver</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
 <div class="block">Adds the <code>MasterQuotasObserver</code> to the list of configured Master observers to
  automatically remove quotas for a table when that table is deleted.</div>
 </td>
 </tr>
-<tr id="i170" class="altColor">
+<tr id="i171" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#updateReplicationPeerConfig-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">updateReplicationPeerConfig</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>
 <div class="block">Update the peerConfig for the specified peer</div>
 </td>
 </tr>
-<tr id="i171" class="rowColor">
+<tr id="i172" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#waitForMasterActive--">waitForMasterActive</a></span>()</code>
 <div class="block">If configured to put regions on active master,
  wait till a backup master becomes active.</div>
 </td>
 </tr>
-<tr id="i172" class="altColor">
+<tr id="i173" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#waitForRegionServers-org.apache.hadoop.hbase.monitoring.MonitoredTask-">waitForRegionServers</a></span>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)</code>&nbsp;</td>
 </tr>
-<tr id="i173" class="rowColor">
+<tr id="i174" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#waitUntilMetaOnline--">waitUntilMetaOnline</a></span>()</code>
+<div class="block">Check hbase:meta is up and ready for reading.</div>
+</td>
+</tr>
+<tr id="i175" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#waitUntilNamespaceOnline--">waitUntilNamespaceOnline</a></span>()</code>
+<div class="block">Check hbase:namespace table is assigned.</div>
+</td>
+</tr>
+<tr id="i176" class="altColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#warnOrThrowExceptionForFailure-boolean-java.lang.String-java.lang.String-java.lang.Exception-">warnOrThrowExceptionForFailure</a></span>(boolean&nbsp;logWarn,
                               <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;confKey,
@@ -1515,7 +1531,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.251">LOG</a></pre>
+<pre>private static&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.254">LOG</a></pre>
 </li>
 </ul>
 <a name="MASTER">
@@ -1524,7 +1540,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>MASTER</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/master/HMaster.html#line.307">MASTER</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/master/HMaster.html#line.310">MASTER</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.HMaster.MASTER">Constant Field Values</a></dd>
@@ -1537,7 +1553,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>activeMasterManager</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ActiveMasterManager.html" title="class in org.apache.hadoop.hbase.master">ActiveMasterManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.310">activeMasterManager</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ActiveMasterManager.html" title="class in org.apache.hadoop.hbase.master">ActiveMasterManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.313">activeMasterManager</a></pre>
 </li>
 </ul>
 <a name="regionServerTracker">
@@ -1546,7 +1562,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>regionServerTracker</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html" title="class in org.apache.hadoop.hbase.master">RegionServerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.312">regionServerTracker</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html" title="class in org.apache.hadoop.hbase.master">RegionServerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.315">regionServerTracker</a></pre>
 </li>
 </ul>
 <a name="drainingServerTracker">
@@ -1555,7 +1571,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>drainingServerTracker</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/DrainingServerTracker.html" title="class in org.apache.hadoop.hbase.master">DrainingServerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.314">drainingServerTracker</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/DrainingServerTracker.html" title="class in org.apache.hadoop.hbase.master">DrainingServerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.317">drainingServerTracker</a></pre>
 </li>
 </ul>
 <a name="loadBalancerTracker">
@@ -1564,7 +1580,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>loadBalancerTracker</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">LoadBalancerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.316">loadBalancerTracker</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">LoadBalancerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.319">loadBalancerTracker</a></pre>
 </li>
 </ul>
 <a name="metaLocationSyncer">
@@ -1573,7 +1589,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>metaLocationSyncer</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MetaLocationSyncer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.318">metaLocationSyncer</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MetaLocationSyncer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.321">metaLocationSyncer</a></pre>
 </li>
 </ul>
 <a name="masterAddressSyncer">
@@ -1582,7 +1598,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>masterAddressSyncer</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MasterAddressSyncer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.320">masterAddressSyncer</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MasterAddressSyncer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.323">masterAddressSyncer</a></pre>
 </li>
 </ul>
 <a name="splitOrMergeTracker">
@@ -1591,7 +1607,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>splitOrMergeTracker</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/SplitOrMergeTracker.html" title="class in org.apache.hadoop.hbase.master">SplitOrMergeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.323">splitOrMergeTracker</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/SplitOrMergeTracker.html" title="class in org.apache.hadoop.hbase.master">SplitOrMergeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.326">splitOrMergeTracker</a></pre>
 </li>
 </ul>
 <a name="regionNormalizerTracker">
@@ -1600,7 +1616,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>regionNormalizerTracker</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">RegionNormalizerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.326">regionNormalizerTracker</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">RegionNormalizerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.329">regionNormalizerTracker</a></pre>
 </li>
 </ul>
 <a name="maintenanceModeTracker">
@@ -1609,7 +1625,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>maintenanceModeTracker</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/MasterMaintenanceModeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">MasterMaintenanceModeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.329">maintenanceModeTracker</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/MasterMaintenanceModeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">MasterMaintenanceModeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.332">maintenanceModeTracker</a></pre>
 </li>
 </ul>
 <a name="clusterSchemaService">
@@ -1618,7 +1634,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>clusterSchemaService</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ClusterSchemaService.html" title="interface in org.apache.hadoop.hbase.master">ClusterSchemaService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.331">clusterSchemaService</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ClusterSchemaService.html" title="interface in org.apache.hadoop.hbase.master">ClusterSchemaService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.334">clusterSchemaService</a></pre>
 </li>
 </ul>
 <a name="HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS">
@@ -1627,7 +1643,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</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/master/HMaster.html#line.333">HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</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/master/HMaster.html#line.336">HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.HMaster.HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS">Constant Field Values</a></dd>
@@ -1640,7 +1656,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.335">DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.338">DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.HMaster.DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS">Constant Field Values</a></dd>
@@ -1653,7 +1669,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>metricsMaster</h4>
-<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMaster.html" title="class in org.apache.hadoop.hbase.master">MetricsMaster</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.338">metricsMaster</a></pre>
+<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMaster.html" title="class in org.apache.hadoop.hbase.master">MetricsMaster</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.341">metricsMaster</a></pre>
 </li>
 </ul>
 <a name="fileSystemManager">
@@ -1662,7 +1678,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>fileSystemManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MasterFileSystem.html" title="class in org.apache.hadoop.hbase.master">MasterFileSystem</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.340">fileSystemManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MasterFileSystem.html" title="class in org.apache.hadoop.hbase.master">MasterFileSystem</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.343">fileSystemManager</a></pre>
 </li>
 </ul>
 <a name="walManager">
@@ -1671,7 +1687,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>walManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html" title="class in org.apache.hadoop.hbase.master">MasterWalManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.341">walManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html" title="class in org.apache.hadoop.hbase.master">MasterWalManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.344">walManager</a></pre>
 </li>
 </ul>
 <a name="serverManager">
@@ -1680,7 +1696,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>serverManager</h4>
-<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.344">serverManager</a></pre>
+<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.347">serverManager</a></pre>
 </li>
 </ul>
 <a name="assignmentManager">
@@ -1689,7 +1705,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>assignmentManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.347">assignmentManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.350">assignmentManager</a></pre>
 </li>
 </ul>
 <a name="replicationPeerManager">
@@ -1698,7 +1714,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>replicationPeerManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html" title="class in org.apache.hadoop.hbase.master.replication">ReplicationPeerManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.350">replicationPeerManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html" title="class in org.apache.hadoop.hbase.master.replication">ReplicationPeerManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.353">replicationPeerManager</a></pre>
 </li>
 </ul>
 <a name="syncReplicationReplayWALManager">
@@ -1707,7 +1723,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>syncReplicationReplayWALManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/replication/SyncReplicationReplayWALManager.html" title="class in org.apache.hadoop.hbase.master.replication">SyncReplicationReplayWALManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.352">syncReplicationReplayWALManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/replication/SyncReplicationReplayWALManager.html" title="class in org.apache.hadoop.hbase.master.replication">SyncReplicationReplayWALManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.355">syncReplicationReplayWALManager</a></pre>
 </li>
 </ul>
 <a name="rsFatals">
@@ -1716,7 +1732,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>rsFatals</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/monitoring/MemoryBoundedLogMessageBuffer.html" title="class in org.apache.hadoop.hbase.monitoring">MemoryBoundedLogMessageBuffer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.357">rsFatals</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/monitoring/MemoryBoundedLogMessageBuffer.html" title="class in org.apache.hadoop.hbase.monitoring">MemoryBoundedLogMessageBuffer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.360">rsFatals</a></pre>
 </li>
 </ul>
 <a name="activeMaster">
@@ -1725,7 +1741,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>activeMaster</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.360">activeMaster</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.363">activeMaster</a></pre>
 </li>
 </ul>
 <a name="initialized">
@@ -1734,7 +1750,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>initialized</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a>&lt;?&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.363">initialized</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a>&lt;?&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.366">initialized</a></pre>
 </li>
 </ul>
 <a name="serviceStarted">
@@ -1743,7 +1759,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>serviceStarted</h4>
-<pre>volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.367">serviceStarted</a></pre>
+<pre>volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.370">serviceStarted</a></pre>
 </li>
 </ul>
 <a name="maxBlancingTime">
@@ -1752,7 +1768,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>maxBlancingTime</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.370">maxBlancingTime</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.373">maxBlancingTime</a></pre>
 </li>
 </ul>
 <a name="maxRitPercent">
@@ -1761,7 +1777,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>maxRitPercent</h4>
-<pre>private final&nbsp;double <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.372">maxRitPercent</a></pre>
+<pre>private final&nbsp;double <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.375">maxRitPercent</a></pre>
 </li>
 </ul>
 <a name="lockManager">
@@ -1770,7 +1786,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>lockManager</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/locking/LockManager.html" title="class in org.apache.hadoop.hbase.master.locking">LockManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.374">lockManager</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/locking/LockManager.html" title="class in org.apache.hadoop.hbase.master.locking">LockManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.377">lockManager</a></pre>
 </li>
 </ul>
 <a name="balancer">
@@ -1779,7 +1795,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>balancer</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html" title="interface in org.apache.hadoop.hbase.master">LoadBalancer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.376">balancer</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html" title="interface in org.apache.hadoop.hbase.master">LoadBalancer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.379">balancer</a></pre>
 </li>
 </ul>
 <a name="normalizer">
@@ -1788,7 +1804,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>normalizer</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizer.html" title="interface in org.apache.hadoop.hbase.master.normalizer">RegionNormalizer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.377">normalizer</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizer.html" title="interface in org.apache.hadoop.hbase.master.normalizer">RegionNormalizer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.380">normalizer</a></pre>
 </li>
 </ul>
 <a name="balancerChore">
@@ -1797,7 +1813,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>balancerChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/balancer/BalancerChore.html" title="class in org.apache.hadoop.hbase.master.balancer">BalancerChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.378">balancerChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/balancer/BalancerChore.html" title="class in org.apache.hadoop.hbase.master.balancer">BalancerChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.381">balancerChore</a></pre>
 </li>
 </ul>
 <a name="normalizerChore">
@@ -1806,7 +1822,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>normalizerChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizerChore.html" title="class in org.apache.hadoop.hbase.master.normalizer">RegionNormalizerChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.379">normalizerChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizerChore.html" title="class in org.apache.hadoop.hbase.master.normalizer">RegionNormalizerChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.382">normalizerChore</a></pre>
 </li>
 </ul>
 <a name="clusterStatusChore">
@@ -1815,7 +1831,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>clusterStatusChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/balancer/ClusterStatusChore.html" title="class in org.apache.hadoop.hbase.master.balancer">ClusterStatusChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.380">clusterStatusChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/balancer/ClusterStatusChore.html" title="class in org.apache.hadoop.hbase.master.balancer">ClusterStatusChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.383">clusterStatusChore</a></pre>
 </li>
 </ul>
 <a name="clusterStatusPublisherChore">
@@ -1824,7 +1840,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>clusterStatusPublisherChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ClusterStatusPublisher.html" title="class in org.apache.hadoop.hbase.master">ClusterStatusPublisher</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.381">clusterStatusPublisherChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ClusterStatusPublisher.html" title="class in org.apache.hadoop.hbase.master">ClusterStatusPublisher</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.384">clusterStatusPublisherChore</a></pre>
 </li>
 </ul>
 <a name="catalogJanitorChore">
@@ -1833,7 +1849,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>catalogJanitorChore</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/master/CatalogJanitor.html" title="class in org.apache.hadoop.hbase.master">CatalogJanitor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.383">catalogJanitorChore</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/master/CatalogJanitor.html" title="class in org.apache.hadoop.hbase.master">CatalogJanitor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.386">catalogJanitorChore</a></pre>
 </li>
 </ul>
 <a name="logCleaner">
@@ -1842,7 +1858,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>logCleaner</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/cleaner/LogCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">LogCleaner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.384">logCleaner</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/cleaner/LogCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">LogCleaner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.387">logCleaner</a></pre>
 </li>
 </ul>
 <a name="hfileCleaner">
@@ -1851,7 +1867,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>hfileCleaner</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/cleaner/HFileCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">HFileCleaner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.385">hfileCleaner</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/cleaner/HFileCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">HFileCleaner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.388">hfileCleaner</a></pre>
 </li>
 </ul>
 <a name="replicationBarrierCleaner">
@@ -1860,7 +1876,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>replicationBarrierCleaner</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/cleaner/ReplicationBarrierCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">ReplicationBarrierCleaner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.386">replicationBarrierCleaner</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/cleaner/ReplicationBarrierCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">ReplicationBarrierCleaner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.389">replicationBarrierCleaner</a></pre>
 </li>
 </ul>
 <a name="expiredMobFileCleanerChore">
@@ -1869,7 +1885,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>expiredMobFileCleanerChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ExpiredMobFileCleanerChore.html" title="class in org.apache.hadoop.hbase.master">ExpiredMobFileCleanerChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.387">expiredMobFileCleanerChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ExpiredMobFileCleanerChore.html" title="class in org.apache.hadoop.hbase.master">ExpiredMobFileCleanerChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.390">expiredMobFileCleanerChore</a></pre>
 </li>
 </ul>
 <a name="mobCompactChore">
@@ -1878,7 +1894,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>mobCompactChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MobCompactionChore.html" title="class in org.apache.hadoop.hbase.master">MobCompactionChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.388">mobCompactChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MobCompactionChore.html" title="class in org.apache.hadoop.hbase.master">MobCompactionChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.391">mobCompactChore</a></pre>
 </li>
 </ul>
 <a name="mobCompactThread">
@@ -1887,7 +1903,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>mobCompactThread</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MasterMobCompactionThread.html" title="class in org.apache.hadoop.hbase.master">MasterMobCompactionThread</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.389">mobCompactThread</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MasterMobCompactionThread.html" title="class in org.apache.hadoop.hbase.master">MasterMobCompactionThread</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.392">mobCompactThread</a></pre>
 </li>
 </ul>
 <a name="mobCompactionLock">
@@ -1896,7 +1912,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>mobCompactionLock</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/IdLock.html" title="class in org.apache.hadoop.hbase.util">IdLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.391">mobCompactionLock</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/IdLock.html" title="class in org.apache.hadoop.hbase.util">IdLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.394">mobCompactionLock</a></pre>
 </li>
 </ul>
 <a name="mobCompactionStates">
@@ -1905,7 +1921,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>mobCompactionStates</h4>
-<pre>private&nbsp;<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="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.394">mobCompactionStates</a></pre>
+<pre>private&nbsp;<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="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.397">mobCompactionStates</a></pre>
 </li>
 </ul>
 <a name="cpHost">
@@ -1914,7 +1930,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>cpHost</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html" title="class in org.apache.hadoop.hbase.master">MasterCoprocessorHost</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.396">cpHost</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html" title="class in org.apache.hadoop.hbase.master">MasterCoprocessorHost</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.399">cpHost</a></pre>
 </li>
 </ul>
 <a name="preLoadTableDescriptors">
@@ -1923,7 +1939,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>preLoadTableDescriptors</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.398">preLoadTableDescriptors</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.401">preLoadTableDescriptors</a></pre>
 </li>
 </ul>
 <a name="masterActiveTime">
@@ -1932,7 +1948,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>masterActiveTime</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.401">masterActiveTime</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.404">masterActiveTime</a></pre>
 </li>
 </ul>
 <a name="masterFinishedInitializationTime">
@@ -1941,7 +1957,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>masterFinishedInitializationTime</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.404">masterFinishedInitializationTime</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.407">masterFinishedInitializationTime</a></pre>
 </li>
 </ul>
 <a name="masterCheckCompression">
@@ -1950,7 +1966,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>masterCheckCompression</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.407">masterCheckCompression</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.410">masterCheckCompression</a></pre>
 </li>
 </ul>
 <a name="masterCheckEncryption">
@@ -1959,7 +1975,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>masterCheckEncryption</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.410">masterCheckEncryption</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.413">masterCheckEncryption</a></pre>
 </li>
 </ul>
 <a name="coprocessorServiceHandlers">
@@ -1968,7 +1984,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>coprocessorServiceHandlers</h4>
-<pre><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>,com.google.protobuf.Service&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.412">coprocessorServiceHandlers</a></pre>
+<pre><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>,com.google.protobuf.Service&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.415">coprocessorServiceHandlers</a></pre>
 </li>
 </ul>
 <a name="snapshotManager">
@@ -1977,7 +1993,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshotManager</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/master/snapshot/SnapshotManager.html" title="class in org.apache.hadoop.hbase.master.snapshot">SnapshotManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.415">snapshotManager</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/master/snapshot/SnapshotManager.html" title="class in org.apache.hadoop.hbase.master.snapshot">SnapshotManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.418">snapshotManager</a></pre>
 </li>
 </ul>
 <a name="mpmHost">
@@ -1986,7 +2002,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>mpmHost</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure/MasterProcedureManagerHost.html" title="class in org.apache.hadoop.hbase.procedure">MasterProcedureManagerHost</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.417">mpmHost</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure/MasterProcedureManagerHost.html" title="class in org.apache.hadoop.hbase.procedure">MasterProcedureManagerHost</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.420">mpmHost</a></pre>
 </li>
 </ul>
 <a name="quotaManager">
@@ -1995,7 +2011,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>quotaManager</h4>
-<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/MasterQuotaManager.html" title="class in org.apache.hadoop.hbase.quotas">MasterQuotaManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.420">quotaManager</a></pre>
+<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/MasterQuotaManager.html" title="class in org.apache.hadoop.hbase.quotas">MasterQuotaManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.423">quotaManager</a></pre>
 </li>
 </ul>
 <a name="spaceQuotaSnapshotNotifier">
@@ -2004,7 +2020,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>spaceQuotaSnapshotNotifier</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifier.html" title="interface in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshotNotifier</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.421">spaceQuotaSnapshotNotifier</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifier.html" title="interface in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshotNotifier</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.424">spaceQuotaSnapshotNotifier</a></pre>
 </li>
 </ul>
 <a name="quotaObserverChore">
@@ -2013,7 +2029,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>quotaObserverChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">QuotaObserverChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.422">quotaObserverChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">QuotaObserverChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.425">quotaObserverChore</a></pre>
 </li>
 </ul>
 <a name="snapshotQuotaChore">
@@ -2022,7 +2038,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshotQuotaChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/SnapshotQuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">SnapshotQuotaObserverChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.423">snapshotQuotaChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/SnapshotQuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">SnapshotQuotaObserverChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.426">snapshotQuotaChore</a></pre>
 </li>
 </ul>
 <a name="procedureExecutor">
@@ -2031,7 +2047,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>procedureExecutor</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.425">procedureExecutor</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.428">procedureExecutor</a></pre>
 </li>
 </ul>
 <a name="procedureStore">
@@ -2040,7 +2056,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>procedureStore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.426">procedureStore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.429">procedureStore</a></pre>
 </li>
 </ul>
 <a name="tableStateManager">
@@ -2049,7 +2065,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>tableStateManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/TableStateManager.html" title="class in org.apache.hadoop.hbase.master">TableStateManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.429">tableStateManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/TableStateManager.html" title="class in org.apache.hadoop.hbase.master">TableStateManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.432">tableStateManager</a></pre>
 </li>
 </ul>
 <a name="splitPlanCount">
@@ -2058,7 +2074,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>splitPlanCount</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.431">splitPlanCount</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.434">splitPlanCount</a></pre>
 </li>
 </ul>
 <a name="mergePlanCount">
@@ -2067,7 +2083,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>mergePlanCount</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.432">mergePlanCount</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.435">mergePlanCount</a></pre>
 </li>
 </ul>
 <a name="favoredNodesManager">
@@ -2076,7 +2092,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>favoredNodesManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/favored/FavoredNodesManager.html" title="class in org.apache.hadoop.hbase.favored">FavoredNodesManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.435">favoredNodesManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/favored/FavoredNodesManager.html" title="class in org.apache.hadoop.hbase.favored">FavoredNodesManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.438">favoredNodesManager</a></pre>
 </li>
 </ul>
 <a name="masterJettyServer">
@@ -2085,7 +2101,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>masterJettyServer</h4>
-<pre>private&nbsp;org.eclipse.jetty.server.Server <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.438">masterJettyServer</a></pre>
+<pre>private&nbsp;org.eclipse.jetty.server.Server <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.441">masterJettyServer</a></pre>
 <div class="block">jetty server for master to redirect requests to regionserver infoServer</div>
 </li>
 </ul>
@@ -2095,7 +2111,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockListLast">
 <li class="blockList">
 <h4>UNSUPPORTED_PROCEDURES</h4>
-<pre>private static final&nbsp;org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.807">UNSUPPORTED_PROCEDURES</a></pre>
+<pre>private static final&nbsp;org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.810">UNSUPPORTED_PROCEDURES</a></pre>
 </li>
 </ul>
 </li>
@@ -2112,7 +2128,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HMaster</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.494">HMaster</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.497">HMaster</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
         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.zookeeper.KeeperException</pre>
 <div class="block">Initializes the HMaster. The steps are as follows:
@@ -2146,7 +2162,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>getUseThisHostnameInstead</h4>
-<pre>protected&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/master/HMaster.html#line.565">getUseThisHostnameInstead</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>protected&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/master/HMaster.html#line.568">getUseThisHostnameInstead</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getUseThisHostnameInstead-org.apache.hadoop.conf.Configuration-">getUseThisHostnameInstead</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></code></dd>
@@ -2159,7 +2175,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.572">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.575">run</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#run--">HRegionServer</a></code></span></div>
 <div class="block">The HRegionServer sticks in this loop until closed.</div>
 <dl>
@@ -2176,7 +2192,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>putUpJettyServer</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.610">putUpJettyServer</a>()
+<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.613">putUpJettyServer</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></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2190,7 +2206,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaTableObserver</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>,<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.660">getMetaTableObserver</a>()</pre>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>,<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.663">getMetaTableObserver</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMetaTable

<TRUNCATED>

[03/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcSchedulerFactory.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcSchedulerFactory.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcSchedulerFactory.html
index 8c8cc19..ad0629d 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcSchedulerFactory.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcSchedulerFactory.html
@@ -54,838 +54,854 @@
 <span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.ipc.DelegatingRpcScheduler;<a name="line.46"></a>
 <span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.ipc.PriorityFunction;<a name="line.47"></a>
 <span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.ipc.RpcScheduler;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.regionserver.SimpleRpcSchedulerFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.testclassification.MiscTests;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.ManualEnvironmentEdge;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.junit.AfterClass;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.junit.Assert;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.junit.BeforeClass;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.junit.ClassRule;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.junit.Rule;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.junit.Test;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.junit.experimental.categories.Category;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.junit.rules.TestName;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.slf4j.Logger;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.slf4j.LoggerFactory;<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hbase.thirdparty.com.google.common.collect.Sets;<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 {@link org.apache.hadoop.hbase.MetaTableAccessor}.<a name="line.74"></a>
-<span class="sourceLineNo">075</span> */<a name="line.75"></a>
-<span class="sourceLineNo">076</span>@Category({MiscTests.class, MediumTests.class})<a name="line.76"></a>
-<span class="sourceLineNo">077</span>@SuppressWarnings("deprecation")<a name="line.77"></a>
-<span class="sourceLineNo">078</span>public class TestMetaTableAccessor {<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  @ClassRule<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      HBaseClassTestRule.forClass(TestMetaTableAccessor.class);<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>  private static final Logger LOG = LoggerFactory.getLogger(TestMetaTableAccessor.class);<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  private static final  HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  private static Connection connection;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  private Random random = new Random();<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  @Rule<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  public TestName name = new TestName();<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>  @BeforeClass public static void beforeClass() throws Exception {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    UTIL.startMiniCluster(3);<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>    Configuration c = new Configuration(UTIL.getConfiguration());<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    // Tests to 4 retries every 5 seconds. Make it try every 1 second so more<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    // responsive.  1 second is default as is ten retries.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    c.setLong("hbase.client.pause", 1000);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    c.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 10);<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    connection = ConnectionFactory.createConnection(c);<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>  @AfterClass public static void afterClass() throws Exception {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    connection.close();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    UTIL.shutdownMiniCluster();<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>   * Does {@link MetaTableAccessor#getRegion(Connection, byte[])} and a write<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   * against hbase:meta while its hosted server is restarted to prove our retrying<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * works.<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   */<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  @Test public void testRetrying()<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  throws IOException, InterruptedException {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    LOG.info("Started " + tableName);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    Table t = UTIL.createMultiRegionTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    int regionCount = -1;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    try (RegionLocator r = UTIL.getConnection().getRegionLocator(tableName)) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      regionCount = r.getStartKeys().length;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    // Test it works getting a region from just made user table.<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    final List&lt;RegionInfo&gt; regions =<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      testGettingTableRegions(connection, tableName, regionCount);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    MetaTask reader = new MetaTask(connection, "reader") {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      @Override<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      void metaTask() throws Throwable {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        testGetRegion(connection, regions.get(0));<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        LOG.info("Read " + regions.get(0).getEncodedName());<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    };<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    MetaTask writer = new MetaTask(connection, "writer") {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      @Override<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      void metaTask() throws Throwable {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        MetaTableAccessor.addRegionToMeta(connection, regions.get(0));<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        LOG.info("Wrote " + regions.get(0).getEncodedName());<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>    reader.start();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    writer.start();<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>    // We're gonna check how it takes. If it takes too long, we will consider<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    //  it as a fail. We can't put that in the @Test tag as we want to close<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    //  the threads nicely<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    final long timeOut = 180000;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    long startTime = System.currentTimeMillis();<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>    try {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      // Make sure reader and writer are working.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      assertTrue(reader.isProgressing());<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      assertTrue(writer.isProgressing());<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>      // Kill server hosting meta -- twice  . See if our reader/writer ride over the<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      // meta moves.  They'll need to retry.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      for (int i = 0; i &lt; 2; i++) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        LOG.info("Restart=" + i);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        UTIL.ensureSomeRegionServersAvailable(2);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        int index = -1;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        do {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          index = UTIL.getMiniHBaseCluster().getServerWithMeta();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        } while (index == -1 &amp;&amp;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>          startTime + timeOut &lt; System.currentTimeMillis());<a name="line.162"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.regionserver.SimpleRpcSchedulerFactory;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.testclassification.MiscTests;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.ManualEnvironmentEdge;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.junit.AfterClass;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.junit.Assert;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.junit.BeforeClass;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.junit.ClassRule;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.junit.Rule;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.junit.Test;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.junit.experimental.categories.Category;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.junit.rules.TestName;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.slf4j.Logger;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.slf4j.LoggerFactory;<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hbase.thirdparty.com.google.common.collect.Sets;<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>/**<a name="line.74"></a>
+<span class="sourceLineNo">075</span> * Test {@link org.apache.hadoop.hbase.MetaTableAccessor}.<a name="line.75"></a>
+<span class="sourceLineNo">076</span> */<a name="line.76"></a>
+<span class="sourceLineNo">077</span>@Category({MiscTests.class, MediumTests.class})<a name="line.77"></a>
+<span class="sourceLineNo">078</span>@SuppressWarnings("deprecation")<a name="line.78"></a>
+<span class="sourceLineNo">079</span>public class TestMetaTableAccessor {<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  @ClassRule<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      HBaseClassTestRule.forClass(TestMetaTableAccessor.class);<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  private static final Logger LOG = LoggerFactory.getLogger(TestMetaTableAccessor.class);<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private static final  HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  private static Connection connection;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private Random random = new Random();<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  @Rule<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public TestName name = new TestName();<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>  @BeforeClass public static void beforeClass() throws Exception {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    UTIL.startMiniCluster(3);<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>    Configuration c = new Configuration(UTIL.getConfiguration());<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    // Tests to 4 retries every 5 seconds. Make it try every 1 second so more<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    // responsive.  1 second is default as is ten retries.<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    c.setLong("hbase.client.pause", 1000);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    c.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 10);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    connection = ConnectionFactory.createConnection(c);<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>  @AfterClass public static void afterClass() throws Exception {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    connection.close();<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    UTIL.shutdownMiniCluster();<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>  @Test<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  public void testIsMetaWhenAllHealthy() throws InterruptedException {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    HMaster m = UTIL.getMiniHBaseCluster().getMaster();<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    assertTrue(m.waitUntilMetaOnline());<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  @Test<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public void testIsMetaWhenMetaGoesOffline() throws InterruptedException {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    HMaster m = UTIL.getMiniHBaseCluster().getMaster();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    int index = UTIL.getMiniHBaseCluster().getServerWithMeta();<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    HRegionServer rsWithMeta = UTIL.getMiniHBaseCluster().getRegionServer(index);<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    rsWithMeta.abort("TESTING");<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    assertTrue(m.waitUntilMetaOnline());<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>  /**<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   * Does {@link MetaTableAccessor#getRegion(Connection, byte[])} and a write<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   * against hbase:meta while its hosted server is restarted to prove our retrying<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   * works.<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   */<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  @Test public void testRetrying()<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  throws IOException, InterruptedException {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    LOG.info("Started " + tableName);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    Table t = UTIL.createMultiRegionTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    int regionCount = -1;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    try (RegionLocator r = UTIL.getConnection().getRegionLocator(tableName)) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      regionCount = r.getStartKeys().length;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    }<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    // Test it works getting a region from just made user table.<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    final List&lt;RegionInfo&gt; regions =<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      testGettingTableRegions(connection, tableName, regionCount);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    MetaTask reader = new MetaTask(connection, "reader") {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      @Override<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      void metaTask() throws Throwable {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        testGetRegion(connection, regions.get(0));<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        LOG.info("Read " + regions.get(0).getEncodedName());<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      }<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    };<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    MetaTask writer = new MetaTask(connection, "writer") {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      @Override<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      void metaTask() throws Throwable {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        MetaTableAccessor.addRegionToMeta(connection, regions.get(0));<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        LOG.info("Wrote " + regions.get(0).getEncodedName());<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      }<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    };<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    reader.start();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    writer.start();<a name="line.156"></a>
+<span class="sourceLineNo">157</span><a name="line.157"></a>
+<span class="sourceLineNo">158</span>    // We're gonna check how it takes. If it takes too long, we will consider<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    //  it as a fail. We can't put that in the @Test tag as we want to close<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    //  the threads nicely<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    final long timeOut = 180000;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    long startTime = System.currentTimeMillis();<a name="line.162"></a>
 <span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>        if (index != -1){<a name="line.164"></a>
-<span class="sourceLineNo">165</span>          UTIL.getMiniHBaseCluster().abortRegionServer(index);<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          UTIL.getMiniHBaseCluster().waitOnRegionServer(index);<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>      assertTrue("reader: " + reader.toString(), reader.isProgressing());<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      assertTrue("writer: " + writer.toString(), writer.isProgressing());<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    } catch (IOException e) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      throw e;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    } finally {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      reader.stop = true;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      writer.stop = true;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      reader.join();<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      writer.join();<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      t.close();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    long exeTime = System.currentTimeMillis() - startTime;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    assertTrue("Timeout: test took " + exeTime / 1000 + " sec", exeTime &lt; timeOut);<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>   * Thread that runs a MetaTableAccessor task until asked stop.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   */<a name="line.187"></a>
-<span class="sourceLineNo">188</span>  abstract static class MetaTask extends Thread {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    boolean stop = false;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    int count = 0;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    Throwable t = null;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    final Connection connection;<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>    MetaTask(final Connection connection, final String name) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      super(name);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      this.connection = connection;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    }<a name="line.197"></a>
-<span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>    @Override<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    public void run() {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      try {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>        while(!this.stop) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>          LOG.info("Before " + this.getName()+ ", count=" + this.count);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>          metaTask();<a name="line.204"></a>
-<span class="sourceLineNo">205</span>          this.count += 1;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>          LOG.info("After " + this.getName() + ", count=" + this.count);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>          Thread.sleep(100);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>        }<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      } catch (Throwable t) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        LOG.info(this.getName() + " failed", t);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        this.t = t;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      }<a name="line.212"></a>
+<span class="sourceLineNo">164</span>    try {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      // Make sure reader and writer are working.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      assertTrue(reader.isProgressing());<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      assertTrue(writer.isProgressing());<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>      // Kill server hosting meta -- twice  . See if our reader/writer ride over the<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      // meta moves.  They'll need to retry.<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      for (int i = 0; i &lt; 2; i++) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        LOG.info("Restart=" + i);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        UTIL.ensureSomeRegionServersAvailable(2);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>        int index = -1;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        do {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          index = UTIL.getMiniHBaseCluster().getServerWithMeta();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        } while (index == -1 &amp;&amp;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>          startTime + timeOut &lt; System.currentTimeMillis());<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>        if (index != -1){<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          UTIL.getMiniHBaseCluster().abortRegionServer(index);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>          UTIL.getMiniHBaseCluster().waitOnRegionServer(index);<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>      assertTrue("reader: " + reader.toString(), reader.isProgressing());<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      assertTrue("writer: " + writer.toString(), writer.isProgressing());<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    } catch (IOException e) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      throw e;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    } finally {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      reader.stop = true;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      writer.stop = true;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      reader.join();<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      writer.join();<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      t.close();<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    long exeTime = System.currentTimeMillis() - startTime;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    assertTrue("Timeout: test took " + exeTime / 1000 + " sec", exeTime &lt; timeOut);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  }<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>   * Thread that runs a MetaTableAccessor task until asked stop.<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   */<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  abstract static class MetaTask extends Thread {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    boolean stop = false;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    int count = 0;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    Throwable t = null;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    final Connection connection;<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span>    MetaTask(final Connection connection, final String name) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      super(name);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      this.connection = connection;<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>    boolean isProgressing() throws InterruptedException {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      int currentCount = this.count;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      while(currentCount == this.count) {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        if (!isAlive()) return false;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>        if (this.t != null) return false;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        Thread.sleep(10);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      }<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      return true;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>    @Override<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    public String toString() {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return "count=" + this.count + ", t=" +<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        (this.t == null? "null": this.t.toString());<a name="line.228"></a>
+<span class="sourceLineNo">215</span>    @Override<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    public void run() {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      try {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        while(!this.stop) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>          LOG.info("Before " + this.getName()+ ", count=" + this.count);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>          metaTask();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>          this.count += 1;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>          LOG.info("After " + this.getName() + ", count=" + this.count);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>          Thread.sleep(100);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>        }<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      } catch (Throwable t) {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>        LOG.info(this.getName() + " failed", t);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        this.t = t;<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>    abstract void metaTask() throws Throwable;<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>  @Test public void testGetRegionsFromMetaTable()<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  throws IOException, InterruptedException {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    List&lt;RegionInfo&gt; regions =<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      new MetaTableLocator().getMetaRegions(UTIL.getZooKeeperWatcher());<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    assertTrue(regions.size() &gt;= 1);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    assertTrue(new MetaTableLocator().getMetaRegionsAndLocations(<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      UTIL.getZooKeeperWatcher()).size() &gt;= 1);<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>  @Test public void testTableExists() throws IOException {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    assertTrue(MetaTableAccessor.tableExists(connection, tableName));<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    Admin admin = UTIL.getAdmin();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    admin.disableTable(tableName);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    admin.deleteTable(tableName);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    assertTrue(MetaTableAccessor.tableExists(connection,<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        TableName.META_TABLE_NAME));<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    assertTrue(MetaTableAccessor.tableExists(connection, tableName));<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    admin.disableTable(tableName);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    admin.deleteTable(tableName);<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<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>  @Test public void testGetRegion() throws IOException, InterruptedException {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    final String name = this.name.getMethodName();<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    LOG.info("Started " + name);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    // Test get on non-existent region.<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      MetaTableAccessor.getRegion(connection, Bytes.toBytes("nonexistent-region"));<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertNull(pair);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    LOG.info("Finished " + name);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  }<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>  // Test for the optimization made in HBASE-3650<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  @Test public void testScanMetaForTable()<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  throws IOException, InterruptedException {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    LOG.info("Started " + tableName);<a name="line.275"></a>
+<span class="sourceLineNo">231</span>    boolean isProgressing() throws InterruptedException {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      int currentCount = this.count;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      while(currentCount == this.count) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        if (!isAlive()) return false;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        if (this.t != null) return false;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        Thread.sleep(10);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      }<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      return true;<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>    @Override<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    public String toString() {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      return "count=" + this.count + ", t=" +<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        (this.t == null? "null": this.t.toString());<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    abstract void metaTask() throws Throwable;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  }<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>  @Test public void testGetRegionsFromMetaTable()<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  throws IOException, InterruptedException {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    List&lt;RegionInfo&gt; regions =<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      new MetaTableLocator().getMetaRegions(UTIL.getZooKeeperWatcher());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    assertTrue(regions.size() &gt;= 1);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    assertTrue(new MetaTableLocator().getMetaRegionsAndLocations(<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      UTIL.getZooKeeperWatcher()).size() &gt;= 1);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>  }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>  @Test public void testTableExists() throws IOException {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    assertTrue(MetaTableAccessor.tableExists(connection, tableName));<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    Admin admin = UTIL.getAdmin();<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    admin.disableTable(tableName);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    admin.deleteTable(tableName);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    assertTrue(MetaTableAccessor.tableExists(connection,<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        TableName.META_TABLE_NAME));<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    assertTrue(MetaTableAccessor.tableExists(connection, tableName));<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    admin.disableTable(tableName);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    admin.deleteTable(tableName);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  }<a name="line.275"></a>
 <span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    /** Create 2 tables<a name="line.277"></a>
-<span class="sourceLineNo">278</span>     - testScanMetaForTable<a name="line.278"></a>
-<span class="sourceLineNo">279</span>     - testScanMetaForTablf<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>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    // name that is +1 greater than the first one (e+1=f)<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    TableName greaterName =<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        TableName.valueOf("testScanMetaForTablf");<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    UTIL.createTable(greaterName, HConstants.CATALOG_FAMILY);<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>    // Now make sure we only get the regions from 1 of the tables at a time<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    assertEquals(1, MetaTableAccessor.getTableRegions(connection, tableName).size());<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    assertEquals(1, MetaTableAccessor.getTableRegions(connection, greaterName).size());<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>  private static List&lt;RegionInfo&gt; testGettingTableRegions(final Connection connection,<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      final TableName name, final int regionCount)<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  throws IOException, InterruptedException {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    List&lt;RegionInfo&gt; regions = MetaTableAccessor.getTableRegions(connection, name);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    assertEquals(regionCount, regions.size());<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      MetaTableAccessor.getRegion(connection, regions.get(0).getRegionName());<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    assertEquals(regions.get(0).getEncodedName(),<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      pair.getFirst().getEncodedName());<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    return regions;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  }<a name="line.304"></a>
+<span class="sourceLineNo">277</span>  @Test public void testGetRegion() throws IOException, InterruptedException {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    final String name = this.name.getMethodName();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    LOG.info("Started " + name);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    // Test get on non-existent region.<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      MetaTableAccessor.getRegion(connection, Bytes.toBytes("nonexistent-region"));<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    assertNull(pair);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    LOG.info("Finished " + name);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>  // Test for the optimization made in HBASE-3650<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  @Test public void testScanMetaForTable()<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  throws IOException, InterruptedException {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    LOG.info("Started " + tableName);<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>    /** Create 2 tables<a name="line.293"></a>
+<span class="sourceLineNo">294</span>     - testScanMetaForTable<a name="line.294"></a>
+<span class="sourceLineNo">295</span>     - testScanMetaForTablf<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    **/<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    // name that is +1 greater than the first one (e+1=f)<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    TableName greaterName =<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        TableName.valueOf("testScanMetaForTablf");<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    UTIL.createTable(greaterName, HConstants.CATALOG_FAMILY);<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>    // Now make sure we only get the regions from 1 of the tables at a time<a name="line.304"></a>
 <span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span>  private static void testGetRegion(final Connection connection,<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      final RegionInfo region)<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  throws IOException, InterruptedException {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      MetaTableAccessor.getRegion(connection, region.getRegionName());<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    assertEquals(region.getEncodedName(),<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      pair.getFirst().getEncodedName());<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>  @Test<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  public void testParseReplicaIdFromServerColumn() {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    String column1 = HConstants.SERVER_QUALIFIER_STR;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    assertEquals(0, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column1)));<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    String column2 = column1 + MetaTableAccessor.META_REPLICA_ID_DELIMITER;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column2)));<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    String column3 = column2 + "00";<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column3)));<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    String column4 = column3 + "2A";<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    assertEquals(42, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column4)));<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    String column5 = column4 + "2A";<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column5)));<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    String column6 = HConstants.STARTCODE_QUALIFIER_STR;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column6)));<a name="line.328"></a>
+<span class="sourceLineNo">306</span>    assertEquals(1, MetaTableAccessor.getTableRegions(connection, tableName).size());<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    assertEquals(1, MetaTableAccessor.getTableRegions(connection, greaterName).size());<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>  private static List&lt;RegionInfo&gt; testGettingTableRegions(final Connection connection,<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      final TableName name, final int regionCount)<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  throws IOException, InterruptedException {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    List&lt;RegionInfo&gt; regions = MetaTableAccessor.getTableRegions(connection, name);<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    assertEquals(regionCount, regions.size());<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      MetaTableAccessor.getRegion(connection, regions.get(0).getRegionName());<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    assertEquals(regions.get(0).getEncodedName(),<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      pair.getFirst().getEncodedName());<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    return regions;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  private static void testGetRegion(final Connection connection,<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      final RegionInfo region)<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  throws IOException, InterruptedException {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      MetaTableAccessor.getRegion(connection, region.getRegionName());<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    assertEquals(region.getEncodedName(),<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      pair.getFirst().getEncodedName());<a name="line.328"></a>
 <span class="sourceLineNo">329</span>  }<a name="line.329"></a>
 <span class="sourceLineNo">330</span><a name="line.330"></a>
 <span class="sourceLineNo">331</span>  @Test<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public void testMetaReaderGetColumnMethods() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    Assert.assertArrayEquals(HConstants.SERVER_QUALIFIER, MetaTableAccessor.getServerColumn(0));<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.SERVER_QUALIFIER_STR<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      MetaTableAccessor.getServerColumn(42));<a name="line.336"></a>
-<span class="sourceLineNo">337</span><a name="line.337"></a>
-<span class="sourceLineNo">338</span>    Assert.assertArrayEquals(HConstants.STARTCODE_QUALIFIER,<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      MetaTableAccessor.getStartCodeColumn(0));<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.STARTCODE_QUALIFIER_STR<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      MetaTableAccessor.getStartCodeColumn(42));<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>    Assert.assertArrayEquals(HConstants.SEQNUM_QUALIFIER,<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      MetaTableAccessor.getSeqNumColumn(0));<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.SEQNUM_QUALIFIER_STR<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      MetaTableAccessor.getSeqNumColumn(42));<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>  @Test<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  public void testMetaLocationsForRegionReplicas() throws IOException {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    ServerName serverName0 = ServerName.valueOf("foo", 60010, random.nextLong());<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    ServerName serverName1 = ServerName.valueOf("bar", 60010, random.nextLong());<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    ServerName serverName100 = ServerName.valueOf("baz", 60010, random.nextLong());<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>    long regionId = System.currentTimeMillis();<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    RegionInfo primary = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.359"></a>
-<span class="sourceLineNo">360</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        .setSplit(false)<a name="line.361"></a>
-<span class="sourceLineNo">362</span>        .setRegionId(regionId)<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        .setReplicaId(0)<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        .build();<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    RegionInfo replica1 = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.367"></a>
-<span class="sourceLineNo">368</span>        .setSplit(false)<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        .setRegionId(regionId)<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        .setReplicaId(1)<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        .build();<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    RegionInfo replica100 = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.372"></a>
-<span class="sourceLineNo">373</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.374"></a>
-<span class="sourceLineNo">375</span>        .setSplit(false)<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        .setRegionId(regionId)<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        .setReplicaId(100)<a name="line.377"></a>
-<span class="sourceLineNo">378</span>        .build();<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>    long seqNum0 = random.nextLong();<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    long seqNum1 = random.nextLong();<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    long seqNum100 = random.nextLong();<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>    try (Table meta = MetaTableAccessor.getMetaHTable(connection)) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      MetaTableAccessor.updateRegionLocation(connection, primary, serverName0, seqNum0,<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        EnvironmentEdgeManager.currentTime());<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>      // assert that the server, startcode and seqNum columns are there for the primary region<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>      // add replica = 1<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      MetaTableAccessor.updateRegionLocation(connection, replica1, serverName1, seqNum1,<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        EnvironmentEdgeManager.currentTime());<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      // check whether the primary is still there<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      // now check for replica 1<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      assertMetaLocation(meta, primary.getRegionName(), serverName1, seqNum1, 1, true);<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>      // add replica = 1<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      MetaTableAccessor.updateRegionLocation(connection, replica100, serverName100, seqNum100,<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        EnvironmentEdgeManager.currentTime());<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      // check whether the primary is still there<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      // check whether the replica 1 is still there<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      assertMetaLocation(meta, primary.getRegionName(), serverName1, seqNum1, 1, true);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      // now check for replica 1<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      assertMetaLocation(meta, primary.getRegionName(), serverName100, seqNum100, 100, true);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
-<span class="sourceLineNo">409</span>  }<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>  public static void assertMetaLocation(Table meta, byte[] row, ServerName serverName,<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      long seqNum, int replicaId, boolean checkSeqNum) throws IOException {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    Get get = new Get(row);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    Result result = meta.get(get);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    assertTrue(Bytes.equals(<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getServerColumn(replicaId)),<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      Bytes.toBytes(serverName.getHostAndPort())));<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    assertTrue(Bytes.equals(<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getStartCodeColumn(replicaId)),<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      Bytes.toBytes(serverName.getStartcode())));<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    if (checkSeqNum) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      assertTrue(Bytes.equals(<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getSeqNumColumn(replicaId)),<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        Bytes.toBytes(seqNum)));<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    }<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  }<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>  public static void assertEmptyMetaLocation(Table meta, byte[] row, int replicaId)<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      throws IOException {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    Get get = new Get(row);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    Result result = meta.get(get);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    Cell serverCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.432"></a>
-<span class="sourceLineNo">433</span>        MetaTableAccessor.getServerColumn(replicaId));<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    Cell startCodeCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      MetaTableAccessor.getStartCodeColumn(replicaId));<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    assertNotNull(serverCell);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    assertNotNull(startCodeCell);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    assertEquals(0, serverCell.getValueLength());<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    assertEquals(0, startCodeCell.getValueLength());<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>  @Test<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  public void testMetaLocationForRegionReplicasIsRemovedAtTableDeletion() throws IOException {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    long regionId = System.currentTimeMillis();<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    RegionInfo primary = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        .setStartKey(HConstants.EMPTY_START_ROW).setEndKey(HConstants.EMPTY_END_ROW).setSplit(false)<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        .setRegionId(regionId).setReplicaId(0).build();<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>    Table meta = MetaTableAccessor.getMetaHTable(connection);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    try {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      List&lt;RegionInfo&gt; regionInfos = Lists.newArrayList(primary);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      MetaTableAccessor.addRegionsToMeta(connection, regionInfos, 3);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      MetaTableAccessor.removeRegionReplicasFromMeta(Sets.newHashSet(primary.getRegionName()), 1, 2,<a name="line.453"></a>
-<span class="sourceLineNo">454</span>        connection);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      Get get = new Get(primary.getRegionName());<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      Result result = meta.get(get);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      for (int replicaId = 0; replicaId &lt; 3; replicaId++) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>        Cell serverCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>          MetaTableAccessor.getServerColumn(replicaId));<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        Cell startCodeCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.460"></a>
-<span class="sourceLineNo">461</span>          MetaTableAccessor.getStartCodeColumn(replicaId));<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        Cell stateCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.462"></a>
-<span class="sourceLineNo">463</span>          MetaTableAccessor.getRegionStateColumn(replicaId));<a name="line.463"></a>
-<span class="sourceLineNo">464</span>        Cell snCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.464"></a>
-<span class="sourceLineNo">465</span>          MetaTableAccessor.getServerNameColumn(replicaId));<a name="line.465"></a>
-<span class="sourceLineNo">466</span>        if (replicaId == 0) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>          assertNotNull(stateCell);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>        } else {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>          assertNull(serverCell);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          assertNull(startCodeCell);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>          assertNull(stateCell);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>          assertNull(snCell);<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>    } finally {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      meta.close();<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    }<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  }<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>  @Test<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  public void testMetaLocationForRegionReplicasIsAddedAtTableCreation() throws IOException {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    long regionId = System.currentTimeMillis();<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    RegionInfo primary = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.483"></a>
-<span class="sourceLineNo">484</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.484"></a>
-<span class="sourceLineNo">485</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.485"></a>
-<span class="sourceLineNo">486</span>        .setSplit(false)<a name="line.486"></a>
-<span class="sourceLineNo">487</span>        .setRegionId(regionId)<a name="line.487"></a>
-<span class="sourceLineNo">488</span>        .setReplicaId(0)<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        .build();<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span>    Table meta = MetaTableAccessor.getMetaHTable(connection);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    try {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      List&lt;RegionInfo&gt; regionInfos = Lists.newArrayList(primary);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      MetaTableAccessor.addRegionsToMeta(connection, regionInfos, 3);<a name="line.494"></a>
+<span class="sourceLineNo">332</span>  public void testParseReplicaIdFromServerColumn() {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    String column1 = HConstants.SERVER_QUALIFIER_STR;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    assertEquals(0, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column1)));<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    String column2 = column1 + MetaTableAccessor.META_REPLICA_ID_DELIMITER;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column2)));<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    String column3 = column2 + "00";<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column3)));<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    String column4 = column3 + "2A";<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    assertEquals(42, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column4)));<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    String column5 = column4 + "2A";<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column5)));<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    String column6 = HConstants.STARTCODE_QUALIFIER_STR;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column6)));<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  }<a name="line.345"></a>
+<span class="sourceLineNo">346</span><a name="line.346"></a>
+<span class="sourceLineNo">347</span>  @Test<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  public void testMetaReaderGetColumnMethods() {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    Assert.assertArrayEquals(HConstants.SERVER_QUALIFIER, MetaTableAccessor.getServerColumn(0));<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.SERVER_QUALIFIER_STR<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      MetaTableAccessor.getServerColumn(42));<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    Assert.assertArrayEquals(HConstants.STARTCODE_QUALIFIER,<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      MetaTableAccessor.getStartCodeColumn(0));<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.STARTCODE_QUALIFIER_STR<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      MetaTableAccessor.getStartCodeColumn(42));<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>    Assert.assertArrayEquals(HConstants.SEQNUM_QUALIFIER,<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      MetaTableAccessor.getSeqNumColumn(0));<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.SEQNUM_QUALIFIER_STR<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      MetaTableAccessor.getSeqNumColumn(42));<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  }<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>  @Test<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  public void testMetaLocationsForRegionReplicas() throws IOException {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    ServerName serverName0 = ServerName.valueOf("foo", 60010, random.nextLong());<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    ServerName serverName1 = ServerName.valueOf("bar", 60010, random.nextLong());<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    ServerName serverName100 = ServerName.valueOf("baz", 60010, random.nextLong());<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>    long regionId = System.currentTimeMillis();<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    RegionInfo primary = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.374"></a>
+<span class="sourceLineNo">375</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.376"></a>
+<span class="sourceLineNo">377</span>        .setSplit(false)<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        .setRegionId(regionId)<a name="line.378"></a>
+<span class="sourceLineNo">379</span>        .setReplicaId(0)<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        .build();<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    RegionInfo replica1 = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.381"></a>
+<span class="sourceLineNo">382</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.383"></a>
+<span class="sourceLineNo">384</span>        .setSplit(false)<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        .setRegionId(regionId)<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        .setReplicaId(1)<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        .build();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    RegionInfo replica100 = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        .setSplit(false)<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        .setRegionId(regionId)<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        .setReplicaId(100)<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        .build();<a name="line.394"></a>
+<span class="sourceLineNo">395</span><a name="line.395"></a>
+<span class="sourceLineNo">396</span>    long seqNum0 = random.nextLong();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    long seqNum1 = random.nextLong();<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    long seqNum100 = random.nextLong();<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>    try (Table meta = MetaTableAccessor.getMetaHTable(connection)) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      MetaTableAccessor.updateRegionLocation(connection, primary, serverName0, seqNum0,<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        EnvironmentEdgeManager.currentTime());<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>      // assert that the server, startcode and seqNum columns are there for the primary region<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>      // add replica = 1<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      MetaTableAccessor.updateRegionLocation(connection, replica1, serverName1, seqNum1,<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        EnvironmentEdgeManager.currentTime());<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      // check whether the primary is still there<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      // now check for replica 1<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      assertMetaLocation(meta, primary.getRegionName(), serverName1, seqNum1, 1, true);<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>      // add replica = 1<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      MetaTableAccessor.updateRegionLocation(connection, replica100, serverName100, seqNum100,<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        EnvironmentEdgeManager.currentTime());<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      // check whether the primary is still there<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      // check whether the replica 1 is still there<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      assertMetaLocation(meta, primary.getRegionName(), serverName1, seqNum1, 1, true);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      // now check for replica 1<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      assertMetaLocation(meta, primary.getRegionName(), serverName100, seqNum100, 100, true);<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">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  public static void assertMetaLocation(Table meta, byte[] row, ServerName serverName,<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      long seqNum, int replicaId, boolean checkSeqNum) throws IOException {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    Get get = new Get(row);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    Result result = meta.get(get);<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    assertTrue(Bytes.equals(<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getServerColumn(replicaId)),<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      Bytes.toBytes(serverName.getHostAndPort())));<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    assertTrue(Bytes.equals(<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getStartCodeColumn(replicaId)),<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      Bytes.toBytes(serverName.getStartcode())));<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    if (checkSeqNum) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      assertTrue(Bytes.equals(<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getSeqNumColumn(replicaId)),<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        Bytes.toBytes(seqNum)));<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><a name="line.443"></a>
+<span class="sourceLineNo">444</span>  public static void assertEmptyMetaLocation(Table meta, byte[] row, int replicaId)<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      throws IOException {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    Get get = new Get(row);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    Result result = meta.get(get);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    Cell serverCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.448"></a>
+<span class="sourceLineNo">449</span>        MetaTableAccessor.getServerColumn(replicaId));<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    Cell startCodeCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      MetaTableAccessor.getStartCodeColumn(replicaId));<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    assertNotNull(serverCell);<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    assertNotNull(startCodeCell);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    assertEquals(0, serverCell.getValueLength());<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    assertEquals(0, startCodeCell.getValueLength());<a name="line.455"></a>
+<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>  @Test<a name="line.458"></a>
+<span class="sourceLineNo">459</span>  public void testMetaLocationForRegionReplicasIsRemovedAtTableDeletion() throws IOException {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    long regionId = System.currentTimeMillis();<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    RegionInfo primary = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.461"></a>
+<span class="sourceLineNo">462</span>        .setStartKey(HConstants.EMPTY_START_ROW).setEndKey(HConstants.EMPTY_END_ROW).setSplit(false)<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        .setRegionId(regionId).setReplicaId(0).build();<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>    Table meta = MetaTableAccessor.getMetaHTable(connection);<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    try {<a name="line.466"></a>
+<span class="sourceLineNo">467</span>      List&lt;RegionInfo&gt; regionInfos = Lists.newArrayList(primary);<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      MetaTableAccessor.addRegionsToMeta(connection, regionInfos, 3);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      MetaTableAccessor.removeRegionReplicasFromMeta(Sets.newHashSet(primary.getRegionName()), 1, 2,<a name="line.469"></a>
+<span class="sourceLineNo">470</span>        connection);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      Get get = new Get(primary.getRegionName());<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      Result result = meta.get(get);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      for (int replicaId = 0; replicaId &lt; 3; replicaId++) {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>        Cell serverCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.474"></a>
+<span class="sourceLineNo">475</span>          MetaTableAccessor.getServerColumn(replicaId));<a name="line.475"></a>
+<span class="sourceLineNo">476</span>        Cell startCodeCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.476"></a>
+<span class="sourceLineNo">477</span>          MetaTableAccessor.getStartCodeColumn(replicaId));<a name="line.477"></a>
+<span class="sourceLineNo">478</span>        Cell stateCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.47

<TRUNCATED>

[33/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/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 87c92cc..68f47a5 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -438,18 +438,18 @@
 <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/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/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/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaTableAccessor.QueryType</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/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/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/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/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/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/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/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/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaTableAccessor.QueryType</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/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/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/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/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/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/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/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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/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 98ed3ea..1bc57ec 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -216,11 +216,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" 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/RootProcedureState.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">RootProcedureState.State</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/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/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/RootProcedureState.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">RootProcedureState.State</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/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 49f5ce0..f029496 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -229,12 +229,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/RpcThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">RpcThrottlingException.Type</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/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/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>
+<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/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/RpcThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">RpcThrottlingException.Type</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>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/regionserver/HMobStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HMobStore.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HMobStore.html
index 17ab6e0..b2908c6 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HMobStore.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HMobStore.html
@@ -472,7 +472,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#add-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">add</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#add-java.lang.Iterable-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">add</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#addChangedReaderObserver-org.apache.hadoop.hbase.regionserver.ChangedReadersObserver-">addChangedReaderObserver</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#areWritesEnabled--">areWritesEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#assertBulkLoadHFileOk-org.apache.hadoop.fs.Path-">assertBulkLoadHFileOk</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#bulkLoadHFile-byte:A-java.lang.String-org.apache.hadoop.fs.Path-">bulkLoadHFile</a>, <a href="../../../../../org/apache/hadoop/hbase/re
 gionserver/HStore.html#bulkLoadHFile-org.apache.hadoop.hbase.regionserver.StoreFileInfo-">bulkLoadHFile</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#cancelRequestedCompaction-org.apache.hadoop.hbase.regionserver.compactions.CompactionContext-">cancelRequestedCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#canSplit--">canSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#close--">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#closeAndArchiveCompactedFiles--">closeAndArchiveCompactedFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#compact-org.apache.hadoop.hbase.regionserver.compactions.CompactionContext-org.apache.hadoop.hbase.regionserver.throttle.ThroughputController-org.apache.hadoop.hbase.security.User-">compact</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#compactRecentFo
 rTestingAssumingDefaultPolicy-int-">compactRecentForTestingAssumingDefaultPolicy</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#completeCompaction-java.util.Collection-">completeCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createFlushContext-long-org.apache.hadoop.hbase.regionserver.FlushLifeCycleTracker-">createFlushContext</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createStoreFileAndReader-org.apache.hadoop.fs.Path-">createStoreFileAndReader</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createWriterInTmp-long-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-boolean-boolean-boolean-boolean-">createWriterInTmp</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#deleteChangedReaderObserver-org.apache.hadoop.hbase.regionserver.ChangedReadersObserver-">deleteChangedReaderObserver</a>, <a href="../../../../../org
 /apache/hadoop/hbase/regionserver/HStore.html#deregisterChildren-org.apache.hadoop.hbase.conf.ConfigurationManager-">deregisterChildren</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#determineTTLFromFamily-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">determineTTLFromFamily</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#doCompaction-org.apache.hadoop.hbase.regionserver.compactions.CompactionRequestImpl-java.util.Collection-org.apache.hadoop.hbase.security.User-long-java.util.List-">doCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#flushCache-long-org.apache.hadoop.hbase.regionserver.MemStoreSnapshot-org.apache.hadoop.hbase.monitoring.MonitoredTask-org.apache.hadoop.hbase.regionserver.throttle.ThroughputController-org.apache.hadoop.hbase.regionserver.FlushLifeCycleTracker-">flushCache</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getAvgStore
 FileAge--">getAvgStoreFileAge</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getBlockingFileCount--">getBlockingFileCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getBytesPerChecksum-org.apache.hadoop.conf.Configuration-">getBytesPerChecksum</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCacheConfig--">getCacheConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getChecksumType-org.apache.hadoop.conf.Configuration-">getChecksumType</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCloseCheckInterval--">getCloseCheckInterval</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getColumnFamilyDescriptor--">getColumnFamilyDescriptor</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getColumnFamilyName--">getColumnFamilyName</a>, <a href="../../../../../org/apache/hadoop/h
 base/regionserver/HStore.html#getCompactedCellsCount--">getCompactedCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedCellsSize--">getCompactedCellsSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedFiles--">getCompactedFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedFilesCount--">getCompactedFilesCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactionCheckMultiplier--">getCompactionCheckMultiplier</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactionPressure--">getCompactionPressure</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactionProgress--">getCompactionProgress</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactPriority--">getCompactPriority</a>, <a href="../../../../../org/apache/h
 adoop/hbase/regionserver/HStore.html#getComparator--">getComparator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCoprocessorHost--">getCoprocessorHost</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCurrentParallelPutCount--">getCurrentParallelPutCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getDataBlockEncoder--">getDataBlockEncoder</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFileSystem--">getFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushableSize--">getFlushableSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushedCellsCount--">getFlushedCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushedCellsSize--">getFlushedCellsSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlush
 edOutputFileSize--">getFlushedOutputFileSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getHFilesSize--">getHFilesSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getHRegion--">getHRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getLastCompactSize--">getLastCompactSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMajorCompactedCellsCount--">getMajorCompactedCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMajorCompactedCellsSize--">getMajorCompactedCellsSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMaxMemStoreTS--">getMaxMemStoreTS</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMaxSequenceId--">getMaxSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMaxStoreFileAge--">getMaxStoreFileAge<
 /a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMemStoreFlushSize--">getMemStoreFlushSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMemStoreSize--">getMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMinStoreFileAge--">getMinStoreFileAge</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getNumHFiles--">getNumHFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getNumReferenceFiles--">getNumReferenceFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getOffPeakHours--">getOffPeakHours</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getRegionFileSystem--">getRegionFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getRegionInfo--">getRegionInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HSt
 ore.html#getScanInfo--">getScanInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanner-org.apache.hadoop.hbase.client.Scan-java.util.NavigableSet-long-">getScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanners-boolean-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-byte:A-long-">getScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanners-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-">getScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanners-java.util.List-boolean-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-byte:A-long-boolean-">getScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanners-java.uti
 l.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">getScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSize--">getSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSmallestReadPoint--">getSmallestReadPoint</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSnapshotSize--">getSnapshotSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSplitPoint--">getSplitPoint</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreEngine--">getStoreEngine</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefiles--">getStorefiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefilesCount--">getStorefilesCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionse
 rver/HStore.html#getStoreFileSize-org.apache.hadoop.hbase.regionserver.HStoreFile-">getStoreFileSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefilesRootLevelIndexSize--">getStorefilesRootLevelIndexSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefilesSize--">getStorefilesSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreFileTtl--">getStoreFileTtl</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreHomedir-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.client.RegionInfo-byte:A-">getStoreHomedir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreHomedir-org.apache.hadoop.fs.Path-java.lang.String-byte:A-">getStoreHomedir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreSizeUncompressed--">getStoreSizeUncompressed</a>, <a href="../../../../../org/apache/h
 adoop/hbase/regionserver/HStore.html#getTableName--">getTableName</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getTotalStaticBloomSize--">getTotalStaticBloomSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getTotalStaticIndexSize--">getTotalStaticIndexSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#hasReferences--">hasReferences</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#hasTooManyStoreFiles--">hasTooManyStoreFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#heapSize--">heapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#isPrimaryReplicaStore--">isPrimaryReplicaStore</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#isSloppyMemStore--">isSloppyMemStore</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#moveFileIntoPlace-org.ap
 ache.hadoop.fs.Path-">moveFileIntoPlace</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#needsCompaction--">needsCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#onConfigurationChange-org.apache.hadoop.conf.Configuration-">onConfigurationChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#postSnapshotOperation--">postSnapshotOperation</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#preBulkLoadHFile-java.lang.String-long-">preBulkLoadHFile</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#preFlushSeqIDEstimation--">preFlushSeqIDEstimation</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#preSnapshotOperation--">preSnapshotOperation</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#recreateScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver
 .querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">recreateScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#refreshStoreFiles--">refreshStoreFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#refreshStoreFiles-java.util.Collection-">refreshStoreFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#registerChildren-org.apache.hadoop.hbase.conf.ConfigurationManager-">registerChildren</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#replaceStoreFiles-java.util.Collection-java.util.Collection-">replaceStoreFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#replayCompactionMarker-org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor-boolean-boolean-">replayCompactionMarker</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#reportArchivedFilesForQuota
 -java.util.List-java.util.List-">reportArchivedFilesForQuota</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#requestCompaction--">requestCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#requestCompaction-int-org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker-org.apache.hadoop.hbase.security.User-">requestCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#setDataBlockEncoderInTest-org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder-">setDataBlockEncoderInTest</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#setScanInfo-org.apache.hadoop.hbase.regionserver.ScanInfo-">setScanInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#shouldPerformMajorCompaction--">shouldPerformMajorCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#snapshot--">snapshot</a>, <a hr
 ef="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#startReplayingFromWAL--">startReplayingFromWAL</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#stopReplayingFromWAL--">stopReplayingFromWAL</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#throttleCompaction-long-">throttleCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#timeOfOldestEdit--">timeOfOldestEdit</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#toString--">toString</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#triggerMajorCompaction--">triggerMajorCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#updateSpaceQuotaAfterFileReplacement-org.apache.hadoop.hbase.quotas.RegionSizeStore-org.apache.hadoop.hbase.client.RegionInfo-java.util.Collection-java.util.Collection-">updateSpaceQuotaAfterFileReplacement</a>, <a hr
 ef="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#upsert-java.lang.Iterable-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">upsert</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#versionsToReturn-int-">versionsToReturn</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#add-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">add</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#add-java.lang.Iterable-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">add</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#addChangedReaderObserver-org.apache.hadoop.hbase.regionserver.ChangedReadersObserver-">addChangedReaderObserver</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#areWritesEnabled--">areWritesEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#assertBulkLoadHFileOk-org.apache.hadoop.fs.Path-">assertBulkLoadHFileOk</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#bulkLoadHFile-byte:A-java.lang.String-org.apache.hadoop.fs.Path-">bulkLoadHFile</a>, <a href="../../../../../org/apache/hadoop/hbase/re
 gionserver/HStore.html#bulkLoadHFile-org.apache.hadoop.hbase.regionserver.StoreFileInfo-">bulkLoadHFile</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#cancelRequestedCompaction-org.apache.hadoop.hbase.regionserver.compactions.CompactionContext-">cancelRequestedCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#canSplit--">canSplit</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#close--">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#closeAndArchiveCompactedFiles--">closeAndArchiveCompactedFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#closeAndArchiveCompactedFiles-boolean-">closeAndArchiveCompactedFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#compact-org.apache.hadoop.hbase.regionserver.compactions.CompactionContext-org.apache.hadoop.hbase.regionserver.throttle.ThroughputCont
 roller-org.apache.hadoop.hbase.security.User-">compact</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#compactRecentForTestingAssumingDefaultPolicy-int-">compactRecentForTestingAssumingDefaultPolicy</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#completeCompaction-java.util.Collection-">completeCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createFlushContext-long-org.apache.hadoop.hbase.regionserver.FlushLifeCycleTracker-">createFlushContext</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createStoreFileAndReader-org.apache.hadoop.fs.Path-">createStoreFileAndReader</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#createWriterInTmp-long-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-boolean-boolean-boolean-boolean-">createWriterInTmp</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#de
 leteChangedReaderObserver-org.apache.hadoop.hbase.regionserver.ChangedReadersObserver-">deleteChangedReaderObserver</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#deregisterChildren-org.apache.hadoop.hbase.conf.ConfigurationManager-">deregisterChildren</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#determineTTLFromFamily-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">determineTTLFromFamily</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#doCompaction-org.apache.hadoop.hbase.regionserver.compactions.CompactionRequestImpl-java.util.Collection-org.apache.hadoop.hbase.security.User-long-java.util.List-">doCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#flushCache-long-org.apache.hadoop.hbase.regionserver.MemStoreSnapshot-org.apache.hadoop.hbase.monitoring.MonitoredTask-org.apache.hadoop.hbase.regionserver.throttle.ThroughputController-org.apache.ha
 doop.hbase.regionserver.FlushLifeCycleTracker-">flushCache</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getAvgStoreFileAge--">getAvgStoreFileAge</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getBlockingFileCount--">getBlockingFileCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getBytesPerChecksum-org.apache.hadoop.conf.Configuration-">getBytesPerChecksum</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCacheConfig--">getCacheConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getChecksumType-org.apache.hadoop.conf.Configuration-">getChecksumType</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCloseCheckInterval--">getCloseCheckInterval</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getColumnFamilyDescriptor--">getColumnFamilyDescriptor</a>, <a href="../../.
 ./../../org/apache/hadoop/hbase/regionserver/HStore.html#getColumnFamilyName--">getColumnFamilyName</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedCellsCount--">getCompactedCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedCellsSize--">getCompactedCellsSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedFiles--">getCompactedFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactedFilesCount--">getCompactedFilesCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactionCheckMultiplier--">getCompactionCheckMultiplier</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactionPressure--">getCompactionPressure</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactionProgress--">getCompactionProgress</a>, <a href
 ="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCompactPriority--">getCompactPriority</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getComparator--">getComparator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCoprocessorHost--">getCoprocessorHost</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getCurrentParallelPutCount--">getCurrentParallelPutCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getDataBlockEncoder--">getDataBlockEncoder</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFileSystem--">getFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushableSize--">getFlushableSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushedCellsCount--">getFlushedCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/region
 server/HStore.html#getFlushedCellsSize--">getFlushedCellsSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getFlushedOutputFileSize--">getFlushedOutputFileSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getHFilesSize--">getHFilesSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getHRegion--">getHRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getLastCompactSize--">getLastCompactSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMajorCompactedCellsCount--">getMajorCompactedCellsCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMajorCompactedCellsSize--">getMajorCompactedCellsSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMaxMemStoreTS--">getMaxMemStoreTS</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMaxSe
 quenceId--">getMaxSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMaxStoreFileAge--">getMaxStoreFileAge</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMemStoreFlushSize--">getMemStoreFlushSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMemStoreSize--">getMemStoreSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getMinStoreFileAge--">getMinStoreFileAge</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getNumHFiles--">getNumHFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getNumReferenceFiles--">getNumReferenceFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getOffPeakHours--">getOffPeakHours</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getRegionFileSystem--">getRegionFileSystem</a>, <a href="../../../../../o
 rg/apache/hadoop/hbase/regionserver/HStore.html#getRegionInfo--">getRegionInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanInfo--">getScanInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanner-org.apache.hadoop.hbase.client.Scan-java.util.NavigableSet-long-">getScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanners-boolean-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-byte:A-long-">getScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanners-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-">getScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanners-java.util.List-boolean-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQuer
 yMatcher-byte:A-byte:A-long-boolean-">getScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">getScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSize--">getSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSmallestReadPoint--">getSmallestReadPoint</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSnapshotSize--">getSnapshotSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getSplitPoint--">getSplitPoint</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreEngine--">getStoreEngine</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefiles--">getStorefiles</a>, <a href="../../../../../org
 /apache/hadoop/hbase/regionserver/HStore.html#getStorefilesCount--">getStorefilesCount</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreFileSize-org.apache.hadoop.hbase.regionserver.HStoreFile-">getStoreFileSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefilesRootLevelIndexSize--">getStorefilesRootLevelIndexSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStorefilesSize--">getStorefilesSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreFileTtl--">getStoreFileTtl</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreHomedir-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.client.RegionInfo-byte:A-">getStoreHomedir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreHomedir-org.apache.hadoop.fs.Path-java.lang.String-byte:A-">getStoreHomedir</a>, <a href="../../../.
 ./../org/apache/hadoop/hbase/regionserver/HStore.html#getStoreSizeUncompressed--">getStoreSizeUncompressed</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getTableName--">getTableName</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getTotalStaticBloomSize--">getTotalStaticBloomSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#getTotalStaticIndexSize--">getTotalStaticIndexSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#hasReferences--">hasReferences</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#hasTooManyStoreFiles--">hasTooManyStoreFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#heapSize--">heapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#isPrimaryReplicaStore--">isPrimaryReplicaStore</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HSt
 ore.html#isSloppyMemStore--">isSloppyMemStore</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#moveFileIntoPlace-org.apache.hadoop.fs.Path-">moveFileIntoPlace</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#needsCompaction--">needsCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#onConfigurationChange-org.apache.hadoop.conf.Configuration-">onConfigurationChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#postSnapshotOperation--">postSnapshotOperation</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#preBulkLoadHFile-java.lang.String-long-">preBulkLoadHFile</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#preFlushSeqIDEstimation--">preFlushSeqIDEstimation</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#preSnapshotOperation--">preSnapshotOperation</a>, <a href="../../..
 /../../org/apache/hadoop/hbase/regionserver/HStore.html#recreateScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">recreateScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#refreshStoreFiles--">refreshStoreFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#refreshStoreFiles-java.util.Collection-">refreshStoreFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#registerChildren-org.apache.hadoop.hbase.conf.ConfigurationManager-">registerChildren</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#replaceStoreFiles-java.util.Collection-java.util.Collection-">replaceStoreFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#replayCompactionMarker-org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescripto
 r-boolean-boolean-">replayCompactionMarker</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#reportArchivedFilesForQuota-java.util.List-java.util.List-">reportArchivedFilesForQuota</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#requestCompaction--">requestCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#requestCompaction-int-org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker-org.apache.hadoop.hbase.security.User-">requestCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#setDataBlockEncoderInTest-org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder-">setDataBlockEncoderInTest</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#setScanInfo-org.apache.hadoop.hbase.regionserver.ScanInfo-">setScanInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#shouldPerformMajorComp
 action--">shouldPerformMajorCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#snapshot--">snapshot</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#startReplayingFromWAL--">startReplayingFromWAL</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#stopReplayingFromWAL--">stopReplayingFromWAL</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#throttleCompaction-long-">throttleCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#timeOfOldestEdit--">timeOfOldestEdit</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#toString--">toString</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#triggerMajorCompaction--">triggerMajorCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#updateSpaceQuotaAfterFileReplacement-org.apache.hadoop.hbase.quotas.R
 egionSizeStore-org.apache.hadoop.hbase.client.RegionInfo-java.util.Collection-java.util.Collection-">updateSpaceQuotaAfterFileReplacement</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#upsert-java.lang.Iterable-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">upsert</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#versionsToReturn-int-">versionsToReturn</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.html
index b89bfe2..a5e8409 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.html
@@ -1485,7 +1485,9 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 </tr>
 <tr id="i169" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#waitForMasterActive--">waitForMasterActive</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#waitForMasterActive--">waitForMasterActive</a></span>()</code>
+<div class="block">Wait for an active Master.</div>
+</td>
 </tr>
 <tr id="i170" class="altColor">
 <td class="colFirst"><code>void</code></td>
@@ -2562,7 +2564,9 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>waitForMasterActive</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.717">waitForMasterActive</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.722">waitForMasterActive</a>()</pre>
+<div class="block">Wait for an active Master.
+ See override in Master superclass for how it is used.</div>
 </li>
 </ul>
 <a name="getProcessName--">
@@ -2571,7 +2575,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>getProcessName</h4>
-<pre>protected&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/regionserver/HRegionServer.html#line.720">getProcessName</a>()</pre>
+<pre>protected&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/regionserver/HRegionServer.html#line.724">getProcessName</a>()</pre>
 </li>
 </ul>
 <a name="canCreateBaseZNode--">
@@ -2580,7 +2584,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>canCreateBaseZNode</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.724">canCreateBaseZNode</a>()</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.728">canCreateBaseZNode</a>()</pre>
 </li>
 </ul>
 <a name="canUpdateTableDescriptor--">
@@ -2589,7 +2593,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>canUpdateTableDescriptor</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.728">canUpdateTableDescriptor</a>()</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.732">canUpdateTableDescriptor</a>()</pre>
 </li>
 </ul>
 <a name="createRpcServices--">
@@ -2598,7 +2602,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>createRpcServices</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RSRpcServices.html" title="class in org.apache.hadoop.hbase.regionserver">RSRpcServices</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.732">createRpcServices</a>()
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RSRpcServices.html" title="class in org.apache.hadoop.hbase.regionserver">RSRpcServices</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.736">createRpcServices</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></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2612,7 +2616,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>configureInfoServer</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.736">configureInfoServer</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.740">configureInfoServer</a>()</pre>
 </li>
 </ul>
 <a name="getDumpServlet--">
@@ -2621,7 +2625,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>getDumpServlet</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends javax.servlet.http.HttpServlet&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.741">getDumpServlet</a>()</pre>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends javax.servlet.http.HttpServlet&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.745">getDumpServlet</a>()</pre>
 </li>
 </ul>
 <a name="registerService-com.google.protobuf.Service-">
@@ -2630,7 +2634,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>registerService</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.746">registerService</a>(com.google.protobuf.Service&nbsp;instance)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.750">registerService</a>(com.google.protobuf.Service&nbsp;instance)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.html#registerService-com.google.protobuf.Service-">RegionServerServices</a></code></span></div>
 <div class="block">Registers a new protocol buffer <code>Service</code> subclass as a coprocessor endpoint to be
  available for handling</div>
@@ -2650,7 +2654,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>createClusterConnection</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.773">createClusterConnection</a>()
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.777">createClusterConnection</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></pre>
 <div class="block">Create a 'smarter' Connection, one that is capable of by-passing RPC if the request is to
  the local server; i.e. a short-circuit Connection. Safe to use going to local or remote
@@ -2667,7 +2671,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>checkCodecs</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.793">checkCodecs</a>(org.apache.hadoop.conf.Configuration&nbsp;c)
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.797">checkCodecs</a>(org.apache.hadoop.conf.Configuration&nbsp;c)
                          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">Run test on configured codecs to make sure supporting libs are in place.</div>
 <dl>
@@ -2684,7 +2688,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>getClusterId</h4>
-<pre>public&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/regionserver/HRegionServer.html#line.805">getClusterId</a>()</pre>
+<pre>public&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/regionserver/HRegionServer.html#line.809">getClusterId</a>()</pre>
 </li>
 </ul>
 <a name="setupClusterConnection--">
@@ -2693,7 +2697,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>setupClusterConnection</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.813">setupClusterConnection</a>()
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.817">setupClusterConnection</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></pre>
 <div class="block">Setup our cluster connection if not already initialized.</div>
 <dl>
@@ -2708,7 +2712,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>preRegistrationInitialization</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.825">preRegistrationInitialization</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.829">preRegistrationInitialization</a>()</pre>
 <div class="block">All initialization needed before we go register with Master.<br>
  Do bare minimum. Do bulk of initializations AFTER we've connected to the Master.<br>
  In here we just put up the RpcServer, setup Connection, and ZooKeeper.</div>
@@ -2720,7 +2724,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>initializeZooKeeper</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.848">initializeZooKeeper</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.852">initializeZooKeeper</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>,
                                  <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>
 <div class="block">Bring up connection to zk ensemble and then wait until a master for this cluster and then after


[02/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html
index 8c8cc19..ad0629d 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html
@@ -54,838 +54,854 @@
 <span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.ipc.DelegatingRpcScheduler;<a name="line.46"></a>
 <span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.ipc.PriorityFunction;<a name="line.47"></a>
 <span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.ipc.RpcScheduler;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.regionserver.SimpleRpcSchedulerFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.testclassification.MiscTests;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.ManualEnvironmentEdge;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.junit.AfterClass;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.junit.Assert;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.junit.BeforeClass;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.junit.ClassRule;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.junit.Rule;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.junit.Test;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.junit.experimental.categories.Category;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.junit.rules.TestName;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.slf4j.Logger;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.slf4j.LoggerFactory;<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hbase.thirdparty.com.google.common.collect.Sets;<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 {@link org.apache.hadoop.hbase.MetaTableAccessor}.<a name="line.74"></a>
-<span class="sourceLineNo">075</span> */<a name="line.75"></a>
-<span class="sourceLineNo">076</span>@Category({MiscTests.class, MediumTests.class})<a name="line.76"></a>
-<span class="sourceLineNo">077</span>@SuppressWarnings("deprecation")<a name="line.77"></a>
-<span class="sourceLineNo">078</span>public class TestMetaTableAccessor {<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  @ClassRule<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      HBaseClassTestRule.forClass(TestMetaTableAccessor.class);<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>  private static final Logger LOG = LoggerFactory.getLogger(TestMetaTableAccessor.class);<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  private static final  HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  private static Connection connection;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  private Random random = new Random();<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  @Rule<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  public TestName name = new TestName();<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>  @BeforeClass public static void beforeClass() throws Exception {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    UTIL.startMiniCluster(3);<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>    Configuration c = new Configuration(UTIL.getConfiguration());<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    // Tests to 4 retries every 5 seconds. Make it try every 1 second so more<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    // responsive.  1 second is default as is ten retries.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    c.setLong("hbase.client.pause", 1000);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    c.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 10);<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    connection = ConnectionFactory.createConnection(c);<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>  @AfterClass public static void afterClass() throws Exception {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    connection.close();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    UTIL.shutdownMiniCluster();<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>   * Does {@link MetaTableAccessor#getRegion(Connection, byte[])} and a write<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   * against hbase:meta while its hosted server is restarted to prove our retrying<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * works.<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   */<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  @Test public void testRetrying()<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  throws IOException, InterruptedException {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    LOG.info("Started " + tableName);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    Table t = UTIL.createMultiRegionTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    int regionCount = -1;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    try (RegionLocator r = UTIL.getConnection().getRegionLocator(tableName)) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      regionCount = r.getStartKeys().length;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    // Test it works getting a region from just made user table.<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    final List&lt;RegionInfo&gt; regions =<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      testGettingTableRegions(connection, tableName, regionCount);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    MetaTask reader = new MetaTask(connection, "reader") {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      @Override<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      void metaTask() throws Throwable {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        testGetRegion(connection, regions.get(0));<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        LOG.info("Read " + regions.get(0).getEncodedName());<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    };<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    MetaTask writer = new MetaTask(connection, "writer") {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      @Override<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      void metaTask() throws Throwable {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        MetaTableAccessor.addRegionToMeta(connection, regions.get(0));<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        LOG.info("Wrote " + regions.get(0).getEncodedName());<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>    reader.start();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    writer.start();<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>    // We're gonna check how it takes. If it takes too long, we will consider<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    //  it as a fail. We can't put that in the @Test tag as we want to close<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    //  the threads nicely<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    final long timeOut = 180000;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    long startTime = System.currentTimeMillis();<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>    try {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      // Make sure reader and writer are working.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      assertTrue(reader.isProgressing());<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      assertTrue(writer.isProgressing());<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>      // Kill server hosting meta -- twice  . See if our reader/writer ride over the<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      // meta moves.  They'll need to retry.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      for (int i = 0; i &lt; 2; i++) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        LOG.info("Restart=" + i);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        UTIL.ensureSomeRegionServersAvailable(2);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        int index = -1;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        do {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          index = UTIL.getMiniHBaseCluster().getServerWithMeta();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        } while (index == -1 &amp;&amp;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>          startTime + timeOut &lt; System.currentTimeMillis());<a name="line.162"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.regionserver.SimpleRpcSchedulerFactory;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.testclassification.MiscTests;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.ManualEnvironmentEdge;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.junit.AfterClass;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.junit.Assert;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.junit.BeforeClass;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.junit.ClassRule;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.junit.Rule;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.junit.Test;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.junit.experimental.categories.Category;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.junit.rules.TestName;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.slf4j.Logger;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.slf4j.LoggerFactory;<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hbase.thirdparty.com.google.common.collect.Sets;<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>/**<a name="line.74"></a>
+<span class="sourceLineNo">075</span> * Test {@link org.apache.hadoop.hbase.MetaTableAccessor}.<a name="line.75"></a>
+<span class="sourceLineNo">076</span> */<a name="line.76"></a>
+<span class="sourceLineNo">077</span>@Category({MiscTests.class, MediumTests.class})<a name="line.77"></a>
+<span class="sourceLineNo">078</span>@SuppressWarnings("deprecation")<a name="line.78"></a>
+<span class="sourceLineNo">079</span>public class TestMetaTableAccessor {<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  @ClassRule<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      HBaseClassTestRule.forClass(TestMetaTableAccessor.class);<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  private static final Logger LOG = LoggerFactory.getLogger(TestMetaTableAccessor.class);<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private static final  HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  private static Connection connection;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private Random random = new Random();<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  @Rule<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public TestName name = new TestName();<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>  @BeforeClass public static void beforeClass() throws Exception {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    UTIL.startMiniCluster(3);<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>    Configuration c = new Configuration(UTIL.getConfiguration());<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    // Tests to 4 retries every 5 seconds. Make it try every 1 second so more<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    // responsive.  1 second is default as is ten retries.<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    c.setLong("hbase.client.pause", 1000);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    c.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 10);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    connection = ConnectionFactory.createConnection(c);<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>  @AfterClass public static void afterClass() throws Exception {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    connection.close();<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    UTIL.shutdownMiniCluster();<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>  @Test<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  public void testIsMetaWhenAllHealthy() throws InterruptedException {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    HMaster m = UTIL.getMiniHBaseCluster().getMaster();<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    assertTrue(m.waitUntilMetaOnline());<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  @Test<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public void testIsMetaWhenMetaGoesOffline() throws InterruptedException {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    HMaster m = UTIL.getMiniHBaseCluster().getMaster();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    int index = UTIL.getMiniHBaseCluster().getServerWithMeta();<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    HRegionServer rsWithMeta = UTIL.getMiniHBaseCluster().getRegionServer(index);<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    rsWithMeta.abort("TESTING");<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    assertTrue(m.waitUntilMetaOnline());<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>  /**<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   * Does {@link MetaTableAccessor#getRegion(Connection, byte[])} and a write<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   * against hbase:meta while its hosted server is restarted to prove our retrying<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   * works.<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   */<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  @Test public void testRetrying()<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  throws IOException, InterruptedException {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    LOG.info("Started " + tableName);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    Table t = UTIL.createMultiRegionTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    int regionCount = -1;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    try (RegionLocator r = UTIL.getConnection().getRegionLocator(tableName)) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      regionCount = r.getStartKeys().length;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    }<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    // Test it works getting a region from just made user table.<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    final List&lt;RegionInfo&gt; regions =<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      testGettingTableRegions(connection, tableName, regionCount);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    MetaTask reader = new MetaTask(connection, "reader") {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      @Override<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      void metaTask() throws Throwable {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        testGetRegion(connection, regions.get(0));<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        LOG.info("Read " + regions.get(0).getEncodedName());<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      }<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    };<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    MetaTask writer = new MetaTask(connection, "writer") {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      @Override<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      void metaTask() throws Throwable {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        MetaTableAccessor.addRegionToMeta(connection, regions.get(0));<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        LOG.info("Wrote " + regions.get(0).getEncodedName());<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      }<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    };<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    reader.start();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    writer.start();<a name="line.156"></a>
+<span class="sourceLineNo">157</span><a name="line.157"></a>
+<span class="sourceLineNo">158</span>    // We're gonna check how it takes. If it takes too long, we will consider<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    //  it as a fail. We can't put that in the @Test tag as we want to close<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    //  the threads nicely<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    final long timeOut = 180000;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    long startTime = System.currentTimeMillis();<a name="line.162"></a>
 <span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>        if (index != -1){<a name="line.164"></a>
-<span class="sourceLineNo">165</span>          UTIL.getMiniHBaseCluster().abortRegionServer(index);<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          UTIL.getMiniHBaseCluster().waitOnRegionServer(index);<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>      assertTrue("reader: " + reader.toString(), reader.isProgressing());<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      assertTrue("writer: " + writer.toString(), writer.isProgressing());<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    } catch (IOException e) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      throw e;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    } finally {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      reader.stop = true;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      writer.stop = true;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      reader.join();<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      writer.join();<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      t.close();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    long exeTime = System.currentTimeMillis() - startTime;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    assertTrue("Timeout: test took " + exeTime / 1000 + " sec", exeTime &lt; timeOut);<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>   * Thread that runs a MetaTableAccessor task until asked stop.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   */<a name="line.187"></a>
-<span class="sourceLineNo">188</span>  abstract static class MetaTask extends Thread {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    boolean stop = false;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    int count = 0;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    Throwable t = null;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    final Connection connection;<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>    MetaTask(final Connection connection, final String name) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      super(name);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      this.connection = connection;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    }<a name="line.197"></a>
-<span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>    @Override<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    public void run() {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      try {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>        while(!this.stop) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>          LOG.info("Before " + this.getName()+ ", count=" + this.count);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>          metaTask();<a name="line.204"></a>
-<span class="sourceLineNo">205</span>          this.count += 1;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>          LOG.info("After " + this.getName() + ", count=" + this.count);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>          Thread.sleep(100);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>        }<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      } catch (Throwable t) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        LOG.info(this.getName() + " failed", t);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        this.t = t;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      }<a name="line.212"></a>
+<span class="sourceLineNo">164</span>    try {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      // Make sure reader and writer are working.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      assertTrue(reader.isProgressing());<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      assertTrue(writer.isProgressing());<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>      // Kill server hosting meta -- twice  . See if our reader/writer ride over the<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      // meta moves.  They'll need to retry.<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      for (int i = 0; i &lt; 2; i++) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        LOG.info("Restart=" + i);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        UTIL.ensureSomeRegionServersAvailable(2);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>        int index = -1;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        do {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          index = UTIL.getMiniHBaseCluster().getServerWithMeta();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        } while (index == -1 &amp;&amp;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>          startTime + timeOut &lt; System.currentTimeMillis());<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>        if (index != -1){<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          UTIL.getMiniHBaseCluster().abortRegionServer(index);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>          UTIL.getMiniHBaseCluster().waitOnRegionServer(index);<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>      assertTrue("reader: " + reader.toString(), reader.isProgressing());<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      assertTrue("writer: " + writer.toString(), writer.isProgressing());<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    } catch (IOException e) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      throw e;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    } finally {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      reader.stop = true;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      writer.stop = true;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      reader.join();<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      writer.join();<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      t.close();<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    long exeTime = System.currentTimeMillis() - startTime;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    assertTrue("Timeout: test took " + exeTime / 1000 + " sec", exeTime &lt; timeOut);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  }<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>   * Thread that runs a MetaTableAccessor task until asked stop.<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   */<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  abstract static class MetaTask extends Thread {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    boolean stop = false;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    int count = 0;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    Throwable t = null;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    final Connection connection;<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span>    MetaTask(final Connection connection, final String name) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      super(name);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      this.connection = connection;<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>    boolean isProgressing() throws InterruptedException {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      int currentCount = this.count;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      while(currentCount == this.count) {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        if (!isAlive()) return false;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>        if (this.t != null) return false;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        Thread.sleep(10);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      }<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      return true;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>    @Override<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    public String toString() {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return "count=" + this.count + ", t=" +<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        (this.t == null? "null": this.t.toString());<a name="line.228"></a>
+<span class="sourceLineNo">215</span>    @Override<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    public void run() {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      try {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        while(!this.stop) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>          LOG.info("Before " + this.getName()+ ", count=" + this.count);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>          metaTask();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>          this.count += 1;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>          LOG.info("After " + this.getName() + ", count=" + this.count);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>          Thread.sleep(100);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>        }<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      } catch (Throwable t) {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>        LOG.info(this.getName() + " failed", t);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        this.t = t;<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>    abstract void metaTask() throws Throwable;<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>  @Test public void testGetRegionsFromMetaTable()<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  throws IOException, InterruptedException {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    List&lt;RegionInfo&gt; regions =<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      new MetaTableLocator().getMetaRegions(UTIL.getZooKeeperWatcher());<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    assertTrue(regions.size() &gt;= 1);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    assertTrue(new MetaTableLocator().getMetaRegionsAndLocations(<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      UTIL.getZooKeeperWatcher()).size() &gt;= 1);<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>  @Test public void testTableExists() throws IOException {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    assertTrue(MetaTableAccessor.tableExists(connection, tableName));<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    Admin admin = UTIL.getAdmin();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    admin.disableTable(tableName);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    admin.deleteTable(tableName);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    assertTrue(MetaTableAccessor.tableExists(connection,<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        TableName.META_TABLE_NAME));<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    assertTrue(MetaTableAccessor.tableExists(connection, tableName));<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    admin.disableTable(tableName);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    admin.deleteTable(tableName);<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<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>  @Test public void testGetRegion() throws IOException, InterruptedException {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    final String name = this.name.getMethodName();<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    LOG.info("Started " + name);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    // Test get on non-existent region.<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      MetaTableAccessor.getRegion(connection, Bytes.toBytes("nonexistent-region"));<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertNull(pair);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    LOG.info("Finished " + name);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  }<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>  // Test for the optimization made in HBASE-3650<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  @Test public void testScanMetaForTable()<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  throws IOException, InterruptedException {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    LOG.info("Started " + tableName);<a name="line.275"></a>
+<span class="sourceLineNo">231</span>    boolean isProgressing() throws InterruptedException {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      int currentCount = this.count;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      while(currentCount == this.count) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        if (!isAlive()) return false;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        if (this.t != null) return false;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        Thread.sleep(10);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      }<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      return true;<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>    @Override<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    public String toString() {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      return "count=" + this.count + ", t=" +<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        (this.t == null? "null": this.t.toString());<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    abstract void metaTask() throws Throwable;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  }<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>  @Test public void testGetRegionsFromMetaTable()<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  throws IOException, InterruptedException {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    List&lt;RegionInfo&gt; regions =<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      new MetaTableLocator().getMetaRegions(UTIL.getZooKeeperWatcher());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    assertTrue(regions.size() &gt;= 1);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    assertTrue(new MetaTableLocator().getMetaRegionsAndLocations(<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      UTIL.getZooKeeperWatcher()).size() &gt;= 1);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>  }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>  @Test public void testTableExists() throws IOException {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    assertTrue(MetaTableAccessor.tableExists(connection, tableName));<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    Admin admin = UTIL.getAdmin();<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    admin.disableTable(tableName);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    admin.deleteTable(tableName);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    assertTrue(MetaTableAccessor.tableExists(connection,<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        TableName.META_TABLE_NAME));<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    assertTrue(MetaTableAccessor.tableExists(connection, tableName));<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    admin.disableTable(tableName);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    admin.deleteTable(tableName);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  }<a name="line.275"></a>
 <span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    /** Create 2 tables<a name="line.277"></a>
-<span class="sourceLineNo">278</span>     - testScanMetaForTable<a name="line.278"></a>
-<span class="sourceLineNo">279</span>     - testScanMetaForTablf<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>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    // name that is +1 greater than the first one (e+1=f)<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    TableName greaterName =<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        TableName.valueOf("testScanMetaForTablf");<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    UTIL.createTable(greaterName, HConstants.CATALOG_FAMILY);<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>    // Now make sure we only get the regions from 1 of the tables at a time<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    assertEquals(1, MetaTableAccessor.getTableRegions(connection, tableName).size());<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    assertEquals(1, MetaTableAccessor.getTableRegions(connection, greaterName).size());<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>  private static List&lt;RegionInfo&gt; testGettingTableRegions(final Connection connection,<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      final TableName name, final int regionCount)<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  throws IOException, InterruptedException {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    List&lt;RegionInfo&gt; regions = MetaTableAccessor.getTableRegions(connection, name);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    assertEquals(regionCount, regions.size());<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      MetaTableAccessor.getRegion(connection, regions.get(0).getRegionName());<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    assertEquals(regions.get(0).getEncodedName(),<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      pair.getFirst().getEncodedName());<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    return regions;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  }<a name="line.304"></a>
+<span class="sourceLineNo">277</span>  @Test public void testGetRegion() throws IOException, InterruptedException {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    final String name = this.name.getMethodName();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    LOG.info("Started " + name);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    // Test get on non-existent region.<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      MetaTableAccessor.getRegion(connection, Bytes.toBytes("nonexistent-region"));<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    assertNull(pair);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    LOG.info("Finished " + name);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>  // Test for the optimization made in HBASE-3650<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  @Test public void testScanMetaForTable()<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  throws IOException, InterruptedException {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    LOG.info("Started " + tableName);<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>    /** Create 2 tables<a name="line.293"></a>
+<span class="sourceLineNo">294</span>     - testScanMetaForTable<a name="line.294"></a>
+<span class="sourceLineNo">295</span>     - testScanMetaForTablf<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    **/<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    // name that is +1 greater than the first one (e+1=f)<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    TableName greaterName =<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        TableName.valueOf("testScanMetaForTablf");<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    UTIL.createTable(greaterName, HConstants.CATALOG_FAMILY);<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>    // Now make sure we only get the regions from 1 of the tables at a time<a name="line.304"></a>
 <span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span>  private static void testGetRegion(final Connection connection,<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      final RegionInfo region)<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  throws IOException, InterruptedException {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      MetaTableAccessor.getRegion(connection, region.getRegionName());<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    assertEquals(region.getEncodedName(),<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      pair.getFirst().getEncodedName());<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>  @Test<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  public void testParseReplicaIdFromServerColumn() {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    String column1 = HConstants.SERVER_QUALIFIER_STR;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    assertEquals(0, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column1)));<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    String column2 = column1 + MetaTableAccessor.META_REPLICA_ID_DELIMITER;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column2)));<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    String column3 = column2 + "00";<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column3)));<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    String column4 = column3 + "2A";<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    assertEquals(42, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column4)));<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    String column5 = column4 + "2A";<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column5)));<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    String column6 = HConstants.STARTCODE_QUALIFIER_STR;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column6)));<a name="line.328"></a>
+<span class="sourceLineNo">306</span>    assertEquals(1, MetaTableAccessor.getTableRegions(connection, tableName).size());<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    assertEquals(1, MetaTableAccessor.getTableRegions(connection, greaterName).size());<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>  private static List&lt;RegionInfo&gt; testGettingTableRegions(final Connection connection,<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      final TableName name, final int regionCount)<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  throws IOException, InterruptedException {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    List&lt;RegionInfo&gt; regions = MetaTableAccessor.getTableRegions(connection, name);<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    assertEquals(regionCount, regions.size());<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      MetaTableAccessor.getRegion(connection, regions.get(0).getRegionName());<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    assertEquals(regions.get(0).getEncodedName(),<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      pair.getFirst().getEncodedName());<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    return regions;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  private static void testGetRegion(final Connection connection,<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      final RegionInfo region)<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  throws IOException, InterruptedException {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      MetaTableAccessor.getRegion(connection, region.getRegionName());<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    assertEquals(region.getEncodedName(),<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      pair.getFirst().getEncodedName());<a name="line.328"></a>
 <span class="sourceLineNo">329</span>  }<a name="line.329"></a>
 <span class="sourceLineNo">330</span><a name="line.330"></a>
 <span class="sourceLineNo">331</span>  @Test<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public void testMetaReaderGetColumnMethods() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    Assert.assertArrayEquals(HConstants.SERVER_QUALIFIER, MetaTableAccessor.getServerColumn(0));<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.SERVER_QUALIFIER_STR<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      MetaTableAccessor.getServerColumn(42));<a name="line.336"></a>
-<span class="sourceLineNo">337</span><a name="line.337"></a>
-<span class="sourceLineNo">338</span>    Assert.assertArrayEquals(HConstants.STARTCODE_QUALIFIER,<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      MetaTableAccessor.getStartCodeColumn(0));<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.STARTCODE_QUALIFIER_STR<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      MetaTableAccessor.getStartCodeColumn(42));<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>    Assert.assertArrayEquals(HConstants.SEQNUM_QUALIFIER,<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      MetaTableAccessor.getSeqNumColumn(0));<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.SEQNUM_QUALIFIER_STR<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      MetaTableAccessor.getSeqNumColumn(42));<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>  @Test<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  public void testMetaLocationsForRegionReplicas() throws IOException {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    ServerName serverName0 = ServerName.valueOf("foo", 60010, random.nextLong());<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    ServerName serverName1 = ServerName.valueOf("bar", 60010, random.nextLong());<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    ServerName serverName100 = ServerName.valueOf("baz", 60010, random.nextLong());<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>    long regionId = System.currentTimeMillis();<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    RegionInfo primary = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.359"></a>
-<span class="sourceLineNo">360</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        .setSplit(false)<a name="line.361"></a>
-<span class="sourceLineNo">362</span>        .setRegionId(regionId)<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        .setReplicaId(0)<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        .build();<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    RegionInfo replica1 = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.367"></a>
-<span class="sourceLineNo">368</span>        .setSplit(false)<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        .setRegionId(regionId)<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        .setReplicaId(1)<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        .build();<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    RegionInfo replica100 = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.372"></a>
-<span class="sourceLineNo">373</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.374"></a>
-<span class="sourceLineNo">375</span>        .setSplit(false)<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        .setRegionId(regionId)<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        .setReplicaId(100)<a name="line.377"></a>
-<span class="sourceLineNo">378</span>        .build();<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>    long seqNum0 = random.nextLong();<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    long seqNum1 = random.nextLong();<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    long seqNum100 = random.nextLong();<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>    try (Table meta = MetaTableAccessor.getMetaHTable(connection)) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      MetaTableAccessor.updateRegionLocation(connection, primary, serverName0, seqNum0,<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        EnvironmentEdgeManager.currentTime());<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>      // assert that the server, startcode and seqNum columns are there for the primary region<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>      // add replica = 1<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      MetaTableAccessor.updateRegionLocation(connection, replica1, serverName1, seqNum1,<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        EnvironmentEdgeManager.currentTime());<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      // check whether the primary is still there<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      // now check for replica 1<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      assertMetaLocation(meta, primary.getRegionName(), serverName1, seqNum1, 1, true);<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>      // add replica = 1<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      MetaTableAccessor.updateRegionLocation(connection, replica100, serverName100, seqNum100,<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        EnvironmentEdgeManager.currentTime());<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      // check whether the primary is still there<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      // check whether the replica 1 is still there<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      assertMetaLocation(meta, primary.getRegionName(), serverName1, seqNum1, 1, true);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      // now check for replica 1<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      assertMetaLocation(meta, primary.getRegionName(), serverName100, seqNum100, 100, true);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
-<span class="sourceLineNo">409</span>  }<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>  public static void assertMetaLocation(Table meta, byte[] row, ServerName serverName,<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      long seqNum, int replicaId, boolean checkSeqNum) throws IOException {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    Get get = new Get(row);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    Result result = meta.get(get);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    assertTrue(Bytes.equals(<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getServerColumn(replicaId)),<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      Bytes.toBytes(serverName.getHostAndPort())));<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    assertTrue(Bytes.equals(<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getStartCodeColumn(replicaId)),<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      Bytes.toBytes(serverName.getStartcode())));<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    if (checkSeqNum) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      assertTrue(Bytes.equals(<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getSeqNumColumn(replicaId)),<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        Bytes.toBytes(seqNum)));<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    }<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  }<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>  public static void assertEmptyMetaLocation(Table meta, byte[] row, int replicaId)<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      throws IOException {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    Get get = new Get(row);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    Result result = meta.get(get);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    Cell serverCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.432"></a>
-<span class="sourceLineNo">433</span>        MetaTableAccessor.getServerColumn(replicaId));<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    Cell startCodeCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      MetaTableAccessor.getStartCodeColumn(replicaId));<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    assertNotNull(serverCell);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    assertNotNull(startCodeCell);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    assertEquals(0, serverCell.getValueLength());<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    assertEquals(0, startCodeCell.getValueLength());<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>  @Test<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  public void testMetaLocationForRegionReplicasIsRemovedAtTableDeletion() throws IOException {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    long regionId = System.currentTimeMillis();<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    RegionInfo primary = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        .setStartKey(HConstants.EMPTY_START_ROW).setEndKey(HConstants.EMPTY_END_ROW).setSplit(false)<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        .setRegionId(regionId).setReplicaId(0).build();<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>    Table meta = MetaTableAccessor.getMetaHTable(connection);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    try {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      List&lt;RegionInfo&gt; regionInfos = Lists.newArrayList(primary);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      MetaTableAccessor.addRegionsToMeta(connection, regionInfos, 3);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      MetaTableAccessor.removeRegionReplicasFromMeta(Sets.newHashSet(primary.getRegionName()), 1, 2,<a name="line.453"></a>
-<span class="sourceLineNo">454</span>        connection);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      Get get = new Get(primary.getRegionName());<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      Result result = meta.get(get);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      for (int replicaId = 0; replicaId &lt; 3; replicaId++) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>        Cell serverCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>          MetaTableAccessor.getServerColumn(replicaId));<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        Cell startCodeCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.460"></a>
-<span class="sourceLineNo">461</span>          MetaTableAccessor.getStartCodeColumn(replicaId));<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        Cell stateCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.462"></a>
-<span class="sourceLineNo">463</span>          MetaTableAccessor.getRegionStateColumn(replicaId));<a name="line.463"></a>
-<span class="sourceLineNo">464</span>        Cell snCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.464"></a>
-<span class="sourceLineNo">465</span>          MetaTableAccessor.getServerNameColumn(replicaId));<a name="line.465"></a>
-<span class="sourceLineNo">466</span>        if (replicaId == 0) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>          assertNotNull(stateCell);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>        } else {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>          assertNull(serverCell);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          assertNull(startCodeCell);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>          assertNull(stateCell);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>          assertNull(snCell);<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>    } finally {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      meta.close();<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    }<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  }<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>  @Test<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  public void testMetaLocationForRegionReplicasIsAddedAtTableCreation() throws IOException {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    long regionId = System.currentTimeMillis();<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    RegionInfo primary = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.483"></a>
-<span class="sourceLineNo">484</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.484"></a>
-<span class="sourceLineNo">485</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.485"></a>
-<span class="sourceLineNo">486</span>        .setSplit(false)<a name="line.486"></a>
-<span class="sourceLineNo">487</span>        .setRegionId(regionId)<a name="line.487"></a>
-<span class="sourceLineNo">488</span>        .setReplicaId(0)<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        .build();<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span>    Table meta = MetaTableAccessor.getMetaHTable(connection);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    try {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      List&lt;RegionInfo&gt; regionInfos = Lists.newArrayList(primary);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      MetaTableAccessor.addRegionsToMeta(connection, regionInfos, 3);<a name="line.494"></a>
+<span class="sourceLineNo">332</span>  public void testParseReplicaIdFromServerColumn() {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    String column1 = HConstants.SERVER_QUALIFIER_STR;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    assertEquals(0, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column1)));<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    String column2 = column1 + MetaTableAccessor.META_REPLICA_ID_DELIMITER;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column2)));<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    String column3 = column2 + "00";<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column3)));<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    String column4 = column3 + "2A";<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    assertEquals(42, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column4)));<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    String column5 = column4 + "2A";<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column5)));<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    String column6 = HConstants.STARTCODE_QUALIFIER_STR;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column6)));<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  }<a name="line.345"></a>
+<span class="sourceLineNo">346</span><a name="line.346"></a>
+<span class="sourceLineNo">347</span>  @Test<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  public void testMetaReaderGetColumnMethods() {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    Assert.assertArrayEquals(HConstants.SERVER_QUALIFIER, MetaTableAccessor.getServerColumn(0));<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.SERVER_QUALIFIER_STR<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      MetaTableAccessor.getServerColumn(42));<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    Assert.assertArrayEquals(HConstants.STARTCODE_QUALIFIER,<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      MetaTableAccessor.getStartCodeColumn(0));<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.STARTCODE_QUALIFIER_STR<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      MetaTableAccessor.getStartCodeColumn(42));<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>    Assert.assertArrayEquals(HConstants.SEQNUM_QUALIFIER,<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      MetaTableAccessor.getSeqNumColumn(0));<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.SEQNUM_QUALIFIER_STR<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      MetaTableAccessor.getSeqNumColumn(42));<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  }<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>  @Test<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  public void testMetaLocationsForRegionReplicas() throws IOException {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    ServerName serverName0 = ServerName.valueOf("foo", 60010, random.nextLong());<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    ServerName serverName1 = ServerName.valueOf("bar", 60010, random.nextLong());<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    ServerName serverName100 = ServerName.valueOf("baz", 60010, random.nextLong());<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>    long regionId = System.currentTimeMillis();<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    RegionInfo primary = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.374"></a>
+<span class="sourceLineNo">375</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.376"></a>
+<span class="sourceLineNo">377</span>        .setSplit(false)<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        .setRegionId(regionId)<a name="line.378"></a>
+<span class="sourceLineNo">379</span>        .setReplicaId(0)<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        .build();<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    RegionInfo replica1 = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.381"></a>
+<span class="sourceLineNo">382</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.383"></a>
+<span class="sourceLineNo">384</span>        .setSplit(false)<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        .setRegionId(regionId)<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        .setReplicaId(1)<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        .build();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    RegionInfo replica100 = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        .setSplit(false)<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        .setRegionId(regionId)<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        .setReplicaId(100)<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        .build();<a name="line.394"></a>
+<span class="sourceLineNo">395</span><a name="line.395"></a>
+<span class="sourceLineNo">396</span>    long seqNum0 = random.nextLong();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    long seqNum1 = random.nextLong();<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    long seqNum100 = random.nextLong();<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>    try (Table meta = MetaTableAccessor.getMetaHTable(connection)) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      MetaTableAccessor.updateRegionLocation(connection, primary, serverName0, seqNum0,<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        EnvironmentEdgeManager.currentTime());<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>      // assert that the server, startcode and seqNum columns are there for the primary region<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>      // add replica = 1<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      MetaTableAccessor.updateRegionLocation(connection, replica1, serverName1, seqNum1,<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        EnvironmentEdgeManager.currentTime());<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      // check whether the primary is still there<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      // now check for replica 1<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      assertMetaLocation(meta, primary.getRegionName(), serverName1, seqNum1, 1, true);<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>      // add replica = 1<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      MetaTableAccessor.updateRegionLocation(connection, replica100, serverName100, seqNum100,<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        EnvironmentEdgeManager.currentTime());<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      // check whether the primary is still there<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      // check whether the replica 1 is still there<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      assertMetaLocation(meta, primary.getRegionName(), serverName1, seqNum1, 1, true);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      // now check for replica 1<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      assertMetaLocation(meta, primary.getRegionName(), serverName100, seqNum100, 100, true);<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">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  public static void assertMetaLocation(Table meta, byte[] row, ServerName serverName,<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      long seqNum, int replicaId, boolean checkSeqNum) throws IOException {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    Get get = new Get(row);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    Result result = meta.get(get);<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    assertTrue(Bytes.equals(<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getServerColumn(replicaId)),<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      Bytes.toBytes(serverName.getHostAndPort())));<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    assertTrue(Bytes.equals(<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getStartCodeColumn(replicaId)),<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      Bytes.toBytes(serverName.getStartcode())));<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    if (checkSeqNum) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      assertTrue(Bytes.equals(<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getSeqNumColumn(replicaId)),<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        Bytes.toBytes(seqNum)));<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><a name="line.443"></a>
+<span class="sourceLineNo">444</span>  public static void assertEmptyMetaLocation(Table meta, byte[] row, int replicaId)<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      throws IOException {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    Get get = new Get(row);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    Result result = meta.get(get);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    Cell serverCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.448"></a>
+<span class="sourceLineNo">449</span>        MetaTableAccessor.getServerColumn(replicaId));<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    Cell startCodeCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      MetaTableAccessor.getStartCodeColumn(replicaId));<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    assertNotNull(serverCell);<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    assertNotNull(startCodeCell);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    assertEquals(0, serverCell.getValueLength());<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    assertEquals(0, startCodeCell.getValueLength());<a name="line.455"></a>
+<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>  @Test<a name="line.458"></a>
+<span class="sourceLineNo">459</span>  public void testMetaLocationForRegionReplicasIsRemovedAtTableDeletion() throws IOException {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    long regionId = System.currentTimeMillis();<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    RegionInfo primary = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.461"></a>
+<span class="sourceLineNo">462</span>        .setStartKey(HConstants.EMPTY_START_ROW).setEndKey(HConstants.EMPTY_END_ROW).setSplit(false)<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        .setRegionId(regionId).setReplicaId(0).build();<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>    Table meta = MetaTableAccessor.getMetaHTable(connection);<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    try {<a name="line.466"></a>
+<span class="sourceLineNo">467</span>      List&lt;RegionInfo&gt; regionInfos = Lists.newArrayList(primary);<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      MetaTableAccessor.addRegionsToMeta(connection, regionInfos, 3);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      MetaTableAccessor.removeRegionReplicasFromMeta(Sets.newHashSet(primary.getRegionName()), 1, 2,<a name="line.469"></a>
+<span class="sourceLineNo">470</span>        connection);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      Get get = new Get(primary.getRegionName());<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      Result result = meta.get(get);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      for (int replicaId = 0; replicaId &lt; 3; replicaId++) {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>        Cell serverCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.474"></a>
+<span class="sourceLineNo">475</span>          MetaTableAccessor.getServerColumn(replicaId));<a name="line.475"></a>
+<span class="sourceLineNo">476</span>        Cell startCodeCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.476"></a>
+<span class="sourceLineNo">477</span>          MetaTableAccessor.getStartCodeColumn(replicaId));<a name="line.477"></a>
+<span class="sourceLineNo">478</span>        Cell stateCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.478"></a>
+<span class="sourceLineNo">479</span>          MetaTableAccessor.getRegionStateColumn(replicaId));<a name="line.479"></a>

<TRUNCATED>

[05/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html
index 8c8cc19..ad0629d 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html
@@ -54,838 +54,854 @@
 <span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.ipc.DelegatingRpcScheduler;<a name="line.46"></a>
 <span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.ipc.PriorityFunction;<a name="line.47"></a>
 <span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.ipc.RpcScheduler;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.regionserver.SimpleRpcSchedulerFactory;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.testclassification.MiscTests;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.ManualEnvironmentEdge;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.junit.AfterClass;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.junit.Assert;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.junit.BeforeClass;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.junit.ClassRule;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.junit.Rule;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.junit.Test;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.junit.experimental.categories.Category;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.junit.rules.TestName;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.slf4j.Logger;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.slf4j.LoggerFactory;<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hbase.thirdparty.com.google.common.collect.Sets;<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 {@link org.apache.hadoop.hbase.MetaTableAccessor}.<a name="line.74"></a>
-<span class="sourceLineNo">075</span> */<a name="line.75"></a>
-<span class="sourceLineNo">076</span>@Category({MiscTests.class, MediumTests.class})<a name="line.76"></a>
-<span class="sourceLineNo">077</span>@SuppressWarnings("deprecation")<a name="line.77"></a>
-<span class="sourceLineNo">078</span>public class TestMetaTableAccessor {<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  @ClassRule<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      HBaseClassTestRule.forClass(TestMetaTableAccessor.class);<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>  private static final Logger LOG = LoggerFactory.getLogger(TestMetaTableAccessor.class);<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  private static final  HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  private static Connection connection;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  private Random random = new Random();<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  @Rule<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  public TestName name = new TestName();<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>  @BeforeClass public static void beforeClass() throws Exception {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    UTIL.startMiniCluster(3);<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>    Configuration c = new Configuration(UTIL.getConfiguration());<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    // Tests to 4 retries every 5 seconds. Make it try every 1 second so more<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    // responsive.  1 second is default as is ten retries.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    c.setLong("hbase.client.pause", 1000);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    c.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 10);<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    connection = ConnectionFactory.createConnection(c);<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>  @AfterClass public static void afterClass() throws Exception {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    connection.close();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    UTIL.shutdownMiniCluster();<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>   * Does {@link MetaTableAccessor#getRegion(Connection, byte[])} and a write<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   * against hbase:meta while its hosted server is restarted to prove our retrying<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * works.<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   */<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  @Test public void testRetrying()<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  throws IOException, InterruptedException {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    LOG.info("Started " + tableName);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    Table t = UTIL.createMultiRegionTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    int regionCount = -1;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    try (RegionLocator r = UTIL.getConnection().getRegionLocator(tableName)) {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      regionCount = r.getStartKeys().length;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    // Test it works getting a region from just made user table.<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    final List&lt;RegionInfo&gt; regions =<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      testGettingTableRegions(connection, tableName, regionCount);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    MetaTask reader = new MetaTask(connection, "reader") {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      @Override<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      void metaTask() throws Throwable {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        testGetRegion(connection, regions.get(0));<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        LOG.info("Read " + regions.get(0).getEncodedName());<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    };<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    MetaTask writer = new MetaTask(connection, "writer") {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      @Override<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      void metaTask() throws Throwable {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        MetaTableAccessor.addRegionToMeta(connection, regions.get(0));<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        LOG.info("Wrote " + regions.get(0).getEncodedName());<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>    reader.start();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    writer.start();<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>    // We're gonna check how it takes. If it takes too long, we will consider<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    //  it as a fail. We can't put that in the @Test tag as we want to close<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    //  the threads nicely<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    final long timeOut = 180000;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    long startTime = System.currentTimeMillis();<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>    try {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      // Make sure reader and writer are working.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      assertTrue(reader.isProgressing());<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      assertTrue(writer.isProgressing());<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>      // Kill server hosting meta -- twice  . See if our reader/writer ride over the<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      // meta moves.  They'll need to retry.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      for (int i = 0; i &lt; 2; i++) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        LOG.info("Restart=" + i);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        UTIL.ensureSomeRegionServersAvailable(2);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        int index = -1;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        do {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          index = UTIL.getMiniHBaseCluster().getServerWithMeta();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        } while (index == -1 &amp;&amp;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>          startTime + timeOut &lt; System.currentTimeMillis());<a name="line.162"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.regionserver.SimpleRpcSchedulerFactory;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.testclassification.MiscTests;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.ManualEnvironmentEdge;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.zookeeper.MetaTableLocator;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.junit.AfterClass;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.junit.Assert;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.junit.BeforeClass;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.junit.ClassRule;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.junit.Rule;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.junit.Test;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.junit.experimental.categories.Category;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.junit.rules.TestName;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.slf4j.Logger;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.slf4j.LoggerFactory;<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hbase.thirdparty.com.google.common.collect.Sets;<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>/**<a name="line.74"></a>
+<span class="sourceLineNo">075</span> * Test {@link org.apache.hadoop.hbase.MetaTableAccessor}.<a name="line.75"></a>
+<span class="sourceLineNo">076</span> */<a name="line.76"></a>
+<span class="sourceLineNo">077</span>@Category({MiscTests.class, MediumTests.class})<a name="line.77"></a>
+<span class="sourceLineNo">078</span>@SuppressWarnings("deprecation")<a name="line.78"></a>
+<span class="sourceLineNo">079</span>public class TestMetaTableAccessor {<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  @ClassRule<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      HBaseClassTestRule.forClass(TestMetaTableAccessor.class);<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  private static final Logger LOG = LoggerFactory.getLogger(TestMetaTableAccessor.class);<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private static final  HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  private static Connection connection;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private Random random = new Random();<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  @Rule<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public TestName name = new TestName();<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>  @BeforeClass public static void beforeClass() throws Exception {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    UTIL.startMiniCluster(3);<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>    Configuration c = new Configuration(UTIL.getConfiguration());<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    // Tests to 4 retries every 5 seconds. Make it try every 1 second so more<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    // responsive.  1 second is default as is ten retries.<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    c.setLong("hbase.client.pause", 1000);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    c.setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 10);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    connection = ConnectionFactory.createConnection(c);<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>  @AfterClass public static void afterClass() throws Exception {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    connection.close();<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    UTIL.shutdownMiniCluster();<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>  @Test<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  public void testIsMetaWhenAllHealthy() throws InterruptedException {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    HMaster m = UTIL.getMiniHBaseCluster().getMaster();<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    assertTrue(m.waitUntilMetaOnline());<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  @Test<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public void testIsMetaWhenMetaGoesOffline() throws InterruptedException {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    HMaster m = UTIL.getMiniHBaseCluster().getMaster();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    int index = UTIL.getMiniHBaseCluster().getServerWithMeta();<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    HRegionServer rsWithMeta = UTIL.getMiniHBaseCluster().getRegionServer(index);<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    rsWithMeta.abort("TESTING");<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    assertTrue(m.waitUntilMetaOnline());<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>  /**<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   * Does {@link MetaTableAccessor#getRegion(Connection, byte[])} and a write<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   * against hbase:meta while its hosted server is restarted to prove our retrying<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   * works.<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   */<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  @Test public void testRetrying()<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  throws IOException, InterruptedException {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    LOG.info("Started " + tableName);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    Table t = UTIL.createMultiRegionTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    int regionCount = -1;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    try (RegionLocator r = UTIL.getConnection().getRegionLocator(tableName)) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      regionCount = r.getStartKeys().length;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    }<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    // Test it works getting a region from just made user table.<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    final List&lt;RegionInfo&gt; regions =<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      testGettingTableRegions(connection, tableName, regionCount);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    MetaTask reader = new MetaTask(connection, "reader") {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      @Override<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      void metaTask() throws Throwable {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        testGetRegion(connection, regions.get(0));<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        LOG.info("Read " + regions.get(0).getEncodedName());<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      }<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    };<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    MetaTask writer = new MetaTask(connection, "writer") {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      @Override<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      void metaTask() throws Throwable {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        MetaTableAccessor.addRegionToMeta(connection, regions.get(0));<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        LOG.info("Wrote " + regions.get(0).getEncodedName());<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      }<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    };<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    reader.start();<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    writer.start();<a name="line.156"></a>
+<span class="sourceLineNo">157</span><a name="line.157"></a>
+<span class="sourceLineNo">158</span>    // We're gonna check how it takes. If it takes too long, we will consider<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    //  it as a fail. We can't put that in the @Test tag as we want to close<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    //  the threads nicely<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    final long timeOut = 180000;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    long startTime = System.currentTimeMillis();<a name="line.162"></a>
 <span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>        if (index != -1){<a name="line.164"></a>
-<span class="sourceLineNo">165</span>          UTIL.getMiniHBaseCluster().abortRegionServer(index);<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          UTIL.getMiniHBaseCluster().waitOnRegionServer(index);<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>      assertTrue("reader: " + reader.toString(), reader.isProgressing());<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      assertTrue("writer: " + writer.toString(), writer.isProgressing());<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    } catch (IOException e) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      throw e;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    } finally {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      reader.stop = true;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      writer.stop = true;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      reader.join();<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      writer.join();<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      t.close();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    long exeTime = System.currentTimeMillis() - startTime;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    assertTrue("Timeout: test took " + exeTime / 1000 + " sec", exeTime &lt; timeOut);<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>   * Thread that runs a MetaTableAccessor task until asked stop.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   */<a name="line.187"></a>
-<span class="sourceLineNo">188</span>  abstract static class MetaTask extends Thread {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    boolean stop = false;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    int count = 0;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    Throwable t = null;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    final Connection connection;<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>    MetaTask(final Connection connection, final String name) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      super(name);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      this.connection = connection;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    }<a name="line.197"></a>
-<span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>    @Override<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    public void run() {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      try {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>        while(!this.stop) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>          LOG.info("Before " + this.getName()+ ", count=" + this.count);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>          metaTask();<a name="line.204"></a>
-<span class="sourceLineNo">205</span>          this.count += 1;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>          LOG.info("After " + this.getName() + ", count=" + this.count);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>          Thread.sleep(100);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>        }<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      } catch (Throwable t) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        LOG.info(this.getName() + " failed", t);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        this.t = t;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      }<a name="line.212"></a>
+<span class="sourceLineNo">164</span>    try {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      // Make sure reader and writer are working.<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      assertTrue(reader.isProgressing());<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      assertTrue(writer.isProgressing());<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>      // Kill server hosting meta -- twice  . See if our reader/writer ride over the<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      // meta moves.  They'll need to retry.<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      for (int i = 0; i &lt; 2; i++) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        LOG.info("Restart=" + i);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        UTIL.ensureSomeRegionServersAvailable(2);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>        int index = -1;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        do {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          index = UTIL.getMiniHBaseCluster().getServerWithMeta();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        } while (index == -1 &amp;&amp;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>          startTime + timeOut &lt; System.currentTimeMillis());<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>        if (index != -1){<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          UTIL.getMiniHBaseCluster().abortRegionServer(index);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>          UTIL.getMiniHBaseCluster().waitOnRegionServer(index);<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>      assertTrue("reader: " + reader.toString(), reader.isProgressing());<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      assertTrue("writer: " + writer.toString(), writer.isProgressing());<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    } catch (IOException e) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      throw e;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    } finally {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      reader.stop = true;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      writer.stop = true;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      reader.join();<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      writer.join();<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      t.close();<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    long exeTime = System.currentTimeMillis() - startTime;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    assertTrue("Timeout: test took " + exeTime / 1000 + " sec", exeTime &lt; timeOut);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  }<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>   * Thread that runs a MetaTableAccessor task until asked stop.<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   */<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  abstract static class MetaTask extends Thread {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    boolean stop = false;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    int count = 0;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    Throwable t = null;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    final Connection connection;<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span>    MetaTask(final Connection connection, final String name) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      super(name);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      this.connection = connection;<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>    boolean isProgressing() throws InterruptedException {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      int currentCount = this.count;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      while(currentCount == this.count) {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        if (!isAlive()) return false;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>        if (this.t != null) return false;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        Thread.sleep(10);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      }<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      return true;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>    @Override<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    public String toString() {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return "count=" + this.count + ", t=" +<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        (this.t == null? "null": this.t.toString());<a name="line.228"></a>
+<span class="sourceLineNo">215</span>    @Override<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    public void run() {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      try {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        while(!this.stop) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>          LOG.info("Before " + this.getName()+ ", count=" + this.count);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>          metaTask();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>          this.count += 1;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>          LOG.info("After " + this.getName() + ", count=" + this.count);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>          Thread.sleep(100);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>        }<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      } catch (Throwable t) {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>        LOG.info(this.getName() + " failed", t);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        this.t = t;<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>    abstract void metaTask() throws Throwable;<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>  @Test public void testGetRegionsFromMetaTable()<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  throws IOException, InterruptedException {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    List&lt;RegionInfo&gt; regions =<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      new MetaTableLocator().getMetaRegions(UTIL.getZooKeeperWatcher());<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    assertTrue(regions.size() &gt;= 1);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    assertTrue(new MetaTableLocator().getMetaRegionsAndLocations(<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      UTIL.getZooKeeperWatcher()).size() &gt;= 1);<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>  @Test public void testTableExists() throws IOException {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    assertTrue(MetaTableAccessor.tableExists(connection, tableName));<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    Admin admin = UTIL.getAdmin();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    admin.disableTable(tableName);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    admin.deleteTable(tableName);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    assertTrue(MetaTableAccessor.tableExists(connection,<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        TableName.META_TABLE_NAME));<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    assertTrue(MetaTableAccessor.tableExists(connection, tableName));<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    admin.disableTable(tableName);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    admin.deleteTable(tableName);<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<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>  @Test public void testGetRegion() throws IOException, InterruptedException {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    final String name = this.name.getMethodName();<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    LOG.info("Started " + name);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    // Test get on non-existent region.<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      MetaTableAccessor.getRegion(connection, Bytes.toBytes("nonexistent-region"));<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertNull(pair);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    LOG.info("Finished " + name);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  }<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>  // Test for the optimization made in HBASE-3650<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  @Test public void testScanMetaForTable()<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  throws IOException, InterruptedException {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    LOG.info("Started " + tableName);<a name="line.275"></a>
+<span class="sourceLineNo">231</span>    boolean isProgressing() throws InterruptedException {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      int currentCount = this.count;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      while(currentCount == this.count) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        if (!isAlive()) return false;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        if (this.t != null) return false;<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        Thread.sleep(10);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      }<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      return true;<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>    @Override<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    public String toString() {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      return "count=" + this.count + ", t=" +<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        (this.t == null? "null": this.t.toString());<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    abstract void metaTask() throws Throwable;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  }<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>  @Test public void testGetRegionsFromMetaTable()<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  throws IOException, InterruptedException {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    List&lt;RegionInfo&gt; regions =<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      new MetaTableLocator().getMetaRegions(UTIL.getZooKeeperWatcher());<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    assertTrue(regions.size() &gt;= 1);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    assertTrue(new MetaTableLocator().getMetaRegionsAndLocations(<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      UTIL.getZooKeeperWatcher()).size() &gt;= 1);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>  }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>  @Test public void testTableExists() throws IOException {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    assertTrue(MetaTableAccessor.tableExists(connection, tableName));<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    Admin admin = UTIL.getAdmin();<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    admin.disableTable(tableName);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    admin.deleteTable(tableName);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    assertTrue(MetaTableAccessor.tableExists(connection,<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        TableName.META_TABLE_NAME));<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    assertTrue(MetaTableAccessor.tableExists(connection, tableName));<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    admin.disableTable(tableName);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    admin.deleteTable(tableName);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    assertFalse(MetaTableAccessor.tableExists(connection, tableName));<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  }<a name="line.275"></a>
 <span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    /** Create 2 tables<a name="line.277"></a>
-<span class="sourceLineNo">278</span>     - testScanMetaForTable<a name="line.278"></a>
-<span class="sourceLineNo">279</span>     - testScanMetaForTablf<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>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    // name that is +1 greater than the first one (e+1=f)<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    TableName greaterName =<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        TableName.valueOf("testScanMetaForTablf");<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    UTIL.createTable(greaterName, HConstants.CATALOG_FAMILY);<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>    // Now make sure we only get the regions from 1 of the tables at a time<a name="line.288"></a>
-<span class="sourceLineNo">289</span><a name="line.289"></a>
-<span class="sourceLineNo">290</span>    assertEquals(1, MetaTableAccessor.getTableRegions(connection, tableName).size());<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    assertEquals(1, MetaTableAccessor.getTableRegions(connection, greaterName).size());<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>  private static List&lt;RegionInfo&gt; testGettingTableRegions(final Connection connection,<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      final TableName name, final int regionCount)<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  throws IOException, InterruptedException {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    List&lt;RegionInfo&gt; regions = MetaTableAccessor.getTableRegions(connection, name);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    assertEquals(regionCount, regions.size());<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      MetaTableAccessor.getRegion(connection, regions.get(0).getRegionName());<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    assertEquals(regions.get(0).getEncodedName(),<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      pair.getFirst().getEncodedName());<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    return regions;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  }<a name="line.304"></a>
+<span class="sourceLineNo">277</span>  @Test public void testGetRegion() throws IOException, InterruptedException {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    final String name = this.name.getMethodName();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    LOG.info("Started " + name);<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    // Test get on non-existent region.<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      MetaTableAccessor.getRegion(connection, Bytes.toBytes("nonexistent-region"));<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    assertNull(pair);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    LOG.info("Finished " + name);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>  // Test for the optimization made in HBASE-3650<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  @Test public void testScanMetaForTable()<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  throws IOException, InterruptedException {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    LOG.info("Started " + tableName);<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>    /** Create 2 tables<a name="line.293"></a>
+<span class="sourceLineNo">294</span>     - testScanMetaForTable<a name="line.294"></a>
+<span class="sourceLineNo">295</span>     - testScanMetaForTablf<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    **/<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>    UTIL.createTable(tableName, HConstants.CATALOG_FAMILY);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    // name that is +1 greater than the first one (e+1=f)<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    TableName greaterName =<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        TableName.valueOf("testScanMetaForTablf");<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    UTIL.createTable(greaterName, HConstants.CATALOG_FAMILY);<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>    // Now make sure we only get the regions from 1 of the tables at a time<a name="line.304"></a>
 <span class="sourceLineNo">305</span><a name="line.305"></a>
-<span class="sourceLineNo">306</span>  private static void testGetRegion(final Connection connection,<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      final RegionInfo region)<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  throws IOException, InterruptedException {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      MetaTableAccessor.getRegion(connection, region.getRegionName());<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    assertEquals(region.getEncodedName(),<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      pair.getFirst().getEncodedName());<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>  @Test<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  public void testParseReplicaIdFromServerColumn() {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    String column1 = HConstants.SERVER_QUALIFIER_STR;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    assertEquals(0, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column1)));<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    String column2 = column1 + MetaTableAccessor.META_REPLICA_ID_DELIMITER;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column2)));<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    String column3 = column2 + "00";<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column3)));<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    String column4 = column3 + "2A";<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    assertEquals(42, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column4)));<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    String column5 = column4 + "2A";<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column5)));<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    String column6 = HConstants.STARTCODE_QUALIFIER_STR;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column6)));<a name="line.328"></a>
+<span class="sourceLineNo">306</span>    assertEquals(1, MetaTableAccessor.getTableRegions(connection, tableName).size());<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    assertEquals(1, MetaTableAccessor.getTableRegions(connection, greaterName).size());<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>  private static List&lt;RegionInfo&gt; testGettingTableRegions(final Connection connection,<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      final TableName name, final int regionCount)<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  throws IOException, InterruptedException {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    List&lt;RegionInfo&gt; regions = MetaTableAccessor.getTableRegions(connection, name);<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    assertEquals(regionCount, regions.size());<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      MetaTableAccessor.getRegion(connection, regions.get(0).getRegionName());<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    assertEquals(regions.get(0).getEncodedName(),<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      pair.getFirst().getEncodedName());<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    return regions;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  private static void testGetRegion(final Connection connection,<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      final RegionInfo region)<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  throws IOException, InterruptedException {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    Pair&lt;RegionInfo, ServerName&gt; pair =<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      MetaTableAccessor.getRegion(connection, region.getRegionName());<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    assertEquals(region.getEncodedName(),<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      pair.getFirst().getEncodedName());<a name="line.328"></a>
 <span class="sourceLineNo">329</span>  }<a name="line.329"></a>
 <span class="sourceLineNo">330</span><a name="line.330"></a>
 <span class="sourceLineNo">331</span>  @Test<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public void testMetaReaderGetColumnMethods() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    Assert.assertArrayEquals(HConstants.SERVER_QUALIFIER, MetaTableAccessor.getServerColumn(0));<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.SERVER_QUALIFIER_STR<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      MetaTableAccessor.getServerColumn(42));<a name="line.336"></a>
-<span class="sourceLineNo">337</span><a name="line.337"></a>
-<span class="sourceLineNo">338</span>    Assert.assertArrayEquals(HConstants.STARTCODE_QUALIFIER,<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      MetaTableAccessor.getStartCodeColumn(0));<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.STARTCODE_QUALIFIER_STR<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      MetaTableAccessor.getStartCodeColumn(42));<a name="line.342"></a>
-<span class="sourceLineNo">343</span><a name="line.343"></a>
-<span class="sourceLineNo">344</span>    Assert.assertArrayEquals(HConstants.SEQNUM_QUALIFIER,<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      MetaTableAccessor.getSeqNumColumn(0));<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.SEQNUM_QUALIFIER_STR<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      MetaTableAccessor.getSeqNumColumn(42));<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>  @Test<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  public void testMetaLocationsForRegionReplicas() throws IOException {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    ServerName serverName0 = ServerName.valueOf("foo", 60010, random.nextLong());<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    ServerName serverName1 = ServerName.valueOf("bar", 60010, random.nextLong());<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    ServerName serverName100 = ServerName.valueOf("baz", 60010, random.nextLong());<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>    long regionId = System.currentTimeMillis();<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    RegionInfo primary = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.359"></a>
-<span class="sourceLineNo">360</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.360"></a>
-<span class="sourceLineNo">361</span>        .setSplit(false)<a name="line.361"></a>
-<span class="sourceLineNo">362</span>        .setRegionId(regionId)<a name="line.362"></a>
-<span class="sourceLineNo">363</span>        .setReplicaId(0)<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        .build();<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    RegionInfo replica1 = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.367"></a>
-<span class="sourceLineNo">368</span>        .setSplit(false)<a name="line.368"></a>
-<span class="sourceLineNo">369</span>        .setRegionId(regionId)<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        .setReplicaId(1)<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        .build();<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    RegionInfo replica100 = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.372"></a>
-<span class="sourceLineNo">373</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.374"></a>
-<span class="sourceLineNo">375</span>        .setSplit(false)<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        .setRegionId(regionId)<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        .setReplicaId(100)<a name="line.377"></a>
-<span class="sourceLineNo">378</span>        .build();<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>    long seqNum0 = random.nextLong();<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    long seqNum1 = random.nextLong();<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    long seqNum100 = random.nextLong();<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>    try (Table meta = MetaTableAccessor.getMetaHTable(connection)) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      MetaTableAccessor.updateRegionLocation(connection, primary, serverName0, seqNum0,<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        EnvironmentEdgeManager.currentTime());<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>      // assert that the server, startcode and seqNum columns are there for the primary region<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>      // add replica = 1<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      MetaTableAccessor.updateRegionLocation(connection, replica1, serverName1, seqNum1,<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        EnvironmentEdgeManager.currentTime());<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      // check whether the primary is still there<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      // now check for replica 1<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      assertMetaLocation(meta, primary.getRegionName(), serverName1, seqNum1, 1, true);<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>      // add replica = 1<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      MetaTableAccessor.updateRegionLocation(connection, replica100, serverName100, seqNum100,<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        EnvironmentEdgeManager.currentTime());<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      // check whether the primary is still there<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      // check whether the replica 1 is still there<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      assertMetaLocation(meta, primary.getRegionName(), serverName1, seqNum1, 1, true);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      // now check for replica 1<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      assertMetaLocation(meta, primary.getRegionName(), serverName100, seqNum100, 100, true);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    }<a name="line.408"></a>
-<span class="sourceLineNo">409</span>  }<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>  public static void assertMetaLocation(Table meta, byte[] row, ServerName serverName,<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      long seqNum, int replicaId, boolean checkSeqNum) throws IOException {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    Get get = new Get(row);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    Result result = meta.get(get);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    assertTrue(Bytes.equals(<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getServerColumn(replicaId)),<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      Bytes.toBytes(serverName.getHostAndPort())));<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    assertTrue(Bytes.equals(<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getStartCodeColumn(replicaId)),<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      Bytes.toBytes(serverName.getStartcode())));<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    if (checkSeqNum) {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      assertTrue(Bytes.equals(<a name="line.422"></a>
-<span class="sourceLineNo">423</span>        result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getSeqNumColumn(replicaId)),<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        Bytes.toBytes(seqNum)));<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    }<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  }<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>  public static void assertEmptyMetaLocation(Table meta, byte[] row, int replicaId)<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      throws IOException {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    Get get = new Get(row);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    Result result = meta.get(get);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    Cell serverCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.432"></a>
-<span class="sourceLineNo">433</span>        MetaTableAccessor.getServerColumn(replicaId));<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    Cell startCodeCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      MetaTableAccessor.getStartCodeColumn(replicaId));<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    assertNotNull(serverCell);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    assertNotNull(startCodeCell);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    assertEquals(0, serverCell.getValueLength());<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    assertEquals(0, startCodeCell.getValueLength());<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>  @Test<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  public void testMetaLocationForRegionReplicasIsRemovedAtTableDeletion() throws IOException {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    long regionId = System.currentTimeMillis();<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    RegionInfo primary = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        .setStartKey(HConstants.EMPTY_START_ROW).setEndKey(HConstants.EMPTY_END_ROW).setSplit(false)<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        .setRegionId(regionId).setReplicaId(0).build();<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>    Table meta = MetaTableAccessor.getMetaHTable(connection);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    try {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      List&lt;RegionInfo&gt; regionInfos = Lists.newArrayList(primary);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      MetaTableAccessor.addRegionsToMeta(connection, regionInfos, 3);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      MetaTableAccessor.removeRegionReplicasFromMeta(Sets.newHashSet(primary.getRegionName()), 1, 2,<a name="line.453"></a>
-<span class="sourceLineNo">454</span>        connection);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      Get get = new Get(primary.getRegionName());<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      Result result = meta.get(get);<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      for (int replicaId = 0; replicaId &lt; 3; replicaId++) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>        Cell serverCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>          MetaTableAccessor.getServerColumn(replicaId));<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        Cell startCodeCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.460"></a>
-<span class="sourceLineNo">461</span>          MetaTableAccessor.getStartCodeColumn(replicaId));<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        Cell stateCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.462"></a>
-<span class="sourceLineNo">463</span>          MetaTableAccessor.getRegionStateColumn(replicaId));<a name="line.463"></a>
-<span class="sourceLineNo">464</span>        Cell snCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.464"></a>
-<span class="sourceLineNo">465</span>          MetaTableAccessor.getServerNameColumn(replicaId));<a name="line.465"></a>
-<span class="sourceLineNo">466</span>        if (replicaId == 0) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>          assertNotNull(stateCell);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>        } else {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>          assertNull(serverCell);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          assertNull(startCodeCell);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>          assertNull(stateCell);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>          assertNull(snCell);<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>    } finally {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      meta.close();<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    }<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  }<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>  @Test<a name="line.480"></a>
-<span class="sourceLineNo">481</span>  public void testMetaLocationForRegionReplicasIsAddedAtTableCreation() throws IOException {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    long regionId = System.currentTimeMillis();<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    RegionInfo primary = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.483"></a>
-<span class="sourceLineNo">484</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.484"></a>
-<span class="sourceLineNo">485</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.485"></a>
-<span class="sourceLineNo">486</span>        .setSplit(false)<a name="line.486"></a>
-<span class="sourceLineNo">487</span>        .setRegionId(regionId)<a name="line.487"></a>
-<span class="sourceLineNo">488</span>        .setReplicaId(0)<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        .build();<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span>    Table meta = MetaTableAccessor.getMetaHTable(connection);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    try {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      List&lt;RegionInfo&gt; regionInfos = Lists.newArrayList(primary);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      MetaTableAccessor.addRegionsToMeta(connection, regionInfos, 3);<a name="line.494"></a>
+<span class="sourceLineNo">332</span>  public void testParseReplicaIdFromServerColumn() {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    String column1 = HConstants.SERVER_QUALIFIER_STR;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    assertEquals(0, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column1)));<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    String column2 = column1 + MetaTableAccessor.META_REPLICA_ID_DELIMITER;<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column2)));<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    String column3 = column2 + "00";<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column3)));<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    String column4 = column3 + "2A";<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    assertEquals(42, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column4)));<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    String column5 = column4 + "2A";<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column5)));<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    String column6 = HConstants.STARTCODE_QUALIFIER_STR;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    assertEquals(-1, MetaTableAccessor.parseReplicaIdFromServerColumn(Bytes.toBytes(column6)));<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  }<a name="line.345"></a>
+<span class="sourceLineNo">346</span><a name="line.346"></a>
+<span class="sourceLineNo">347</span>  @Test<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  public void testMetaReaderGetColumnMethods() {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    Assert.assertArrayEquals(HConstants.SERVER_QUALIFIER, MetaTableAccessor.getServerColumn(0));<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.SERVER_QUALIFIER_STR<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      MetaTableAccessor.getServerColumn(42));<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    Assert.assertArrayEquals(HConstants.STARTCODE_QUALIFIER,<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      MetaTableAccessor.getStartCodeColumn(0));<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.STARTCODE_QUALIFIER_STR<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      MetaTableAccessor.getStartCodeColumn(42));<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>    Assert.assertArrayEquals(HConstants.SEQNUM_QUALIFIER,<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      MetaTableAccessor.getSeqNumColumn(0));<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    Assert.assertArrayEquals(Bytes.toBytes(HConstants.SEQNUM_QUALIFIER_STR<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      + MetaTableAccessor.META_REPLICA_ID_DELIMITER + "002A"),<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      MetaTableAccessor.getSeqNumColumn(42));<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  }<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>  @Test<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  public void testMetaLocationsForRegionReplicas() throws IOException {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    ServerName serverName0 = ServerName.valueOf("foo", 60010, random.nextLong());<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    ServerName serverName1 = ServerName.valueOf("bar", 60010, random.nextLong());<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    ServerName serverName100 = ServerName.valueOf("baz", 60010, random.nextLong());<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>    long regionId = System.currentTimeMillis();<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    RegionInfo primary = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.374"></a>
+<span class="sourceLineNo">375</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.376"></a>
+<span class="sourceLineNo">377</span>        .setSplit(false)<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        .setRegionId(regionId)<a name="line.378"></a>
+<span class="sourceLineNo">379</span>        .setReplicaId(0)<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        .build();<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    RegionInfo replica1 = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.381"></a>
+<span class="sourceLineNo">382</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.383"></a>
+<span class="sourceLineNo">384</span>        .setSplit(false)<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        .setRegionId(regionId)<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        .setReplicaId(1)<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        .build();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    RegionInfo replica100 = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        .setStartKey(HConstants.EMPTY_START_ROW)<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        .setEndKey(HConstants.EMPTY_END_ROW)<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        .setSplit(false)<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        .setRegionId(regionId)<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        .setReplicaId(100)<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        .build();<a name="line.394"></a>
+<span class="sourceLineNo">395</span><a name="line.395"></a>
+<span class="sourceLineNo">396</span>    long seqNum0 = random.nextLong();<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    long seqNum1 = random.nextLong();<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    long seqNum100 = random.nextLong();<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>    try (Table meta = MetaTableAccessor.getMetaHTable(connection)) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      MetaTableAccessor.updateRegionLocation(connection, primary, serverName0, seqNum0,<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        EnvironmentEdgeManager.currentTime());<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>      // assert that the server, startcode and seqNum columns are there for the primary region<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>      // add replica = 1<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      MetaTableAccessor.updateRegionLocation(connection, replica1, serverName1, seqNum1,<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        EnvironmentEdgeManager.currentTime());<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      // check whether the primary is still there<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      // now check for replica 1<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      assertMetaLocation(meta, primary.getRegionName(), serverName1, seqNum1, 1, true);<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>      // add replica = 1<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      MetaTableAccessor.updateRegionLocation(connection, replica100, serverName100, seqNum100,<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        EnvironmentEdgeManager.currentTime());<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      // check whether the primary is still there<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      assertMetaLocation(meta, primary.getRegionName(), serverName0, seqNum0, 0, true);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      // check whether the replica 1 is still there<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      assertMetaLocation(meta, primary.getRegionName(), serverName1, seqNum1, 1, true);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      // now check for replica 1<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      assertMetaLocation(meta, primary.getRegionName(), serverName100, seqNum100, 100, true);<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">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  public static void assertMetaLocation(Table meta, byte[] row, ServerName serverName,<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      long seqNum, int replicaId, boolean checkSeqNum) throws IOException {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    Get get = new Get(row);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    Result result = meta.get(get);<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    assertTrue(Bytes.equals(<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getServerColumn(replicaId)),<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      Bytes.toBytes(serverName.getHostAndPort())));<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    assertTrue(Bytes.equals(<a name="line.434"></a>
+<span class="sourceLineNo">435</span>      result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getStartCodeColumn(replicaId)),<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      Bytes.toBytes(serverName.getStartcode())));<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    if (checkSeqNum) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      assertTrue(Bytes.equals(<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        result.getValue(HConstants.CATALOG_FAMILY, MetaTableAccessor.getSeqNumColumn(replicaId)),<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        Bytes.toBytes(seqNum)));<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><a name="line.443"></a>
+<span class="sourceLineNo">444</span>  public static void assertEmptyMetaLocation(Table meta, byte[] row, int replicaId)<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      throws IOException {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    Get get = new Get(row);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    Result result = meta.get(get);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    Cell serverCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.448"></a>
+<span class="sourceLineNo">449</span>        MetaTableAccessor.getServerColumn(replicaId));<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    Cell startCodeCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      MetaTableAccessor.getStartCodeColumn(replicaId));<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    assertNotNull(serverCell);<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    assertNotNull(startCodeCell);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    assertEquals(0, serverCell.getValueLength());<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    assertEquals(0, startCodeCell.getValueLength());<a name="line.455"></a>
+<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>  @Test<a name="line.458"></a>
+<span class="sourceLineNo">459</span>  public void testMetaLocationForRegionReplicasIsRemovedAtTableDeletion() throws IOException {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    long regionId = System.currentTimeMillis();<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    RegionInfo primary = RegionInfoBuilder.newBuilder(TableName.valueOf(name.getMethodName()))<a name="line.461"></a>
+<span class="sourceLineNo">462</span>        .setStartKey(HConstants.EMPTY_START_ROW).setEndKey(HConstants.EMPTY_END_ROW).setSplit(false)<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        .setRegionId(regionId).setReplicaId(0).build();<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>    Table meta = MetaTableAccessor.getMetaHTable(connection);<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    try {<a name="line.466"></a>
+<span class="sourceLineNo">467</span>      List&lt;RegionInfo&gt; regionInfos = Lists.newArrayList(primary);<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      MetaTableAccessor.addRegionsToMeta(connection, regionInfos, 3);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      MetaTableAccessor.removeRegionReplicasFromMeta(Sets.newHashSet(primary.getRegionName()), 1, 2,<a name="line.469"></a>
+<span class="sourceLineNo">470</span>        connection);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      Get get = new Get(primary.getRegionName());<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      Result result = meta.get(get);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      for (int replicaId = 0; replicaId &lt; 3; replicaId++) {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>        Cell serverCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.474"></a>
+<span class="sourceLineNo">475</span>          MetaTableAccessor.getServerColumn(replicaId));<a name="line.475"></a>
+<span class="sourceLineNo">476</span>        Cell startCodeCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.476"></a>
+<span class="sourceLineNo">477</span>          MetaTableAccessor.getStartCodeColumn(replicaId));<a name="line.477"></a>
+<span class="sourceLineNo">478</span>        Cell stateCell = result.getColumnLatestCell(HConstants.CATALOG_FAMILY,<a name="line.478"></a>
+<span class="sourceLineNo">479</span>          MetaTableAccessor.getRegionSt

<TRUNCATED>

[10/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounterFactory.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounterFactory.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounterFactory.html
index f33d7e3..5c0a9e2 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounterFactory.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/RetryCounterFactory.html
@@ -36,27 +36,31 @@
 <span class="sourceLineNo">028</span>public class RetryCounterFactory {<a name="line.28"></a>
 <span class="sourceLineNo">029</span>  private final RetryConfig retryConfig;<a name="line.29"></a>
 <span class="sourceLineNo">030</span><a name="line.30"></a>
-<span class="sourceLineNo">031</span>  public RetryCounterFactory(int maxAttempts, int sleepIntervalMillis) {<a name="line.31"></a>
-<span class="sourceLineNo">032</span>    this(maxAttempts, sleepIntervalMillis, -1);<a name="line.32"></a>
+<span class="sourceLineNo">031</span>  public RetryCounterFactory(int sleepIntervalMillis) {<a name="line.31"></a>
+<span class="sourceLineNo">032</span>    this(Integer.MAX_VALUE, sleepIntervalMillis);<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>  public RetryCounterFactory(int maxAttempts, int sleepIntervalMillis, int maxSleepTime) {<a name="line.35"></a>
-<span class="sourceLineNo">036</span>    this(new RetryConfig(<a name="line.36"></a>
-<span class="sourceLineNo">037</span>      maxAttempts,<a name="line.37"></a>
-<span class="sourceLineNo">038</span>      sleepIntervalMillis,<a name="line.38"></a>
-<span class="sourceLineNo">039</span>      maxSleepTime,<a name="line.39"></a>
-<span class="sourceLineNo">040</span>      TimeUnit.MILLISECONDS,<a name="line.40"></a>
-<span class="sourceLineNo">041</span>      new ExponentialBackoffPolicyWithLimit()));<a name="line.41"></a>
-<span class="sourceLineNo">042</span>  }<a name="line.42"></a>
-<span class="sourceLineNo">043</span><a name="line.43"></a>
-<span class="sourceLineNo">044</span>  public RetryCounterFactory(RetryConfig retryConfig) {<a name="line.44"></a>
-<span class="sourceLineNo">045</span>    this.retryConfig = retryConfig;<a name="line.45"></a>
+<span class="sourceLineNo">035</span>  public RetryCounterFactory(int maxAttempts, int sleepIntervalMillis) {<a name="line.35"></a>
+<span class="sourceLineNo">036</span>    this(maxAttempts, sleepIntervalMillis, -1);<a name="line.36"></a>
+<span class="sourceLineNo">037</span>  }<a name="line.37"></a>
+<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">039</span>  public RetryCounterFactory(int maxAttempts, int sleepIntervalMillis, int maxSleepTime) {<a name="line.39"></a>
+<span class="sourceLineNo">040</span>    this(new RetryConfig(<a name="line.40"></a>
+<span class="sourceLineNo">041</span>      maxAttempts,<a name="line.41"></a>
+<span class="sourceLineNo">042</span>      sleepIntervalMillis,<a name="line.42"></a>
+<span class="sourceLineNo">043</span>      maxSleepTime,<a name="line.43"></a>
+<span class="sourceLineNo">044</span>      TimeUnit.MILLISECONDS,<a name="line.44"></a>
+<span class="sourceLineNo">045</span>      new ExponentialBackoffPolicyWithLimit()));<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 RetryCounter create() {<a name="line.48"></a>
-<span class="sourceLineNo">049</span>    return new RetryCounter(retryConfig);<a name="line.49"></a>
+<span class="sourceLineNo">048</span>  public RetryCounterFactory(RetryConfig retryConfig) {<a name="line.48"></a>
+<span class="sourceLineNo">049</span>    this.retryConfig = retryConfig;<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">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>  public RetryCounter create() {<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    return new RetryCounter(retryConfig);<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  }<a name="line.54"></a>
+<span class="sourceLineNo">055</span>}<a name="line.55"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/downloads.html
----------------------------------------------------------------------
diff --git a/downloads.html b/downloads.html
index 09ef17a..e9b8cdc 100644
--- a/downloads.html
+++ b/downloads.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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase Downloads</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -423,7 +423,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-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index 0543853..f96c4ac 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -331,7 +331,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-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index 90b78b8..c7e50fb 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBaseâ„¢ Home</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -411,7 +411,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-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index f9e7775..c2687da 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -291,7 +291,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index 2b25bc3..bd3e19c 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -288,7 +288,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index 73f6b4f..ce93413 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -491,7 +491,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index 59cbbb3..2b9adcf 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -341,7 +341,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index 9cc94e3..8975f6b 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -459,7 +459,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-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index 76fa199..036d0d5 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -440,7 +440,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-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index 9343110..5559587 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -440,7 +440,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index 36389e5..d977a37 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -375,7 +375,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 558ec81..fd31860 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <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.4-HBase.min.css" />
@@ -769,7 +769,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-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index 6d15e50..852e6bd 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -335,7 +335,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index 1e6f37b..91d8420 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -305,7 +305,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index 6ab03db..6e46643 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-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-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 6e25763..289db8c 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -308,7 +308,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-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index 5c3f345..b2cb833 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -303,7 +303,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-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index 225b0c1..873cbcc 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <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.4-HBase.min.css" />
@@ -331,7 +331,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-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index 1420690..29dbcfb 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -299,7 +299,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index f303b51..107e36a 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase™ Sponsors</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -333,7 +333,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-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index 1f92509..8f3041f 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Supporting Projects</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -520,7 +520,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-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index 4da149f..b6472d4 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -754,7 +754,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-frame.html b/testdevapidocs/allclasses-frame.html
index 5597354..0b745af 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -832,6 +832,7 @@
 <li><a href="org/apache/hadoop/hbase/master/cleaner/TestCleanerChore.AllValidPaths.html" title="class in org.apache.hadoop.hbase.master.cleaner" target="classFrame">TestCleanerChore.AllValidPaths</a></li>
 <li><a href="org/apache/hadoop/hbase/master/cleaner/TestCleanerChore.AlwaysDelete.html" title="class in org.apache.hadoop.hbase.master.cleaner" target="classFrame">TestCleanerChore.AlwaysDelete</a></li>
 <li><a href="org/apache/hadoop/hbase/master/cleaner/TestCleanerChore.NeverDelete.html" title="class in org.apache.hadoop.hbase.master.cleaner" target="classFrame">TestCleanerChore.NeverDelete</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestCleanupCompactedFileOnRegionClose</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestClearRegionBlockCache</a></li>
 <li><a href="org/apache/hadoop/hbase/TestClientClusterMetrics.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestClientClusterMetrics</a></li>
 <li><a href="org/apache/hadoop/hbase/TestClientClusterMetrics.MyObserver.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestClientClusterMetrics.MyObserver</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index bfad0e1..70995a9 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -832,6 +832,7 @@
 <li><a href="org/apache/hadoop/hbase/master/cleaner/TestCleanerChore.AllValidPaths.html" title="class in org.apache.hadoop.hbase.master.cleaner">TestCleanerChore.AllValidPaths</a></li>
 <li><a href="org/apache/hadoop/hbase/master/cleaner/TestCleanerChore.AlwaysDelete.html" title="class in org.apache.hadoop.hbase.master.cleaner">TestCleanerChore.AlwaysDelete</a></li>
 <li><a href="org/apache/hadoop/hbase/master/cleaner/TestCleanerChore.NeverDelete.html" title="class in org.apache.hadoop.hbase.master.cleaner">TestCleanerChore.NeverDelete</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html" title="class in org.apache.hadoop.hbase.regionserver">TestCleanupCompactedFileOnRegionClose</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html" title="class in org.apache.hadoop.hbase.regionserver">TestClearRegionBlockCache</a></li>
 <li><a href="org/apache/hadoop/hbase/TestClientClusterMetrics.html" title="class in org.apache.hadoop.hbase">TestClientClusterMetrics</a></li>
 <li><a href="org/apache/hadoop/hbase/TestClientClusterMetrics.MyObserver.html" title="class in org.apache.hadoop.hbase">TestClientClusterMetrics.MyObserver</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 6e0259d..0deb386 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -1145,6 +1145,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html#afterClass--">afterClass()</a></span> - Static method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestRegionReplicaSplit.html" title="class in org.apache.hadoop.hbase.master.assignment">TestRegionReplicaSplit</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#afterclass--">afterclass()</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html" title="class in org.apache.hadoop.hbase.regionserver">TestCleanupCompactedFileOnRegionClose</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionOpen.html#afterClass--">afterClass()</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionOpen.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionOpen</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionReplicas.html#afterClass--">afterClass()</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionReplicas.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionReplicas</a></dt>
@@ -2481,6 +2483,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestCatalogJanitor.html#beforeClass--">beforeClass()</a></span> - Static method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestCatalogJanitor.html" title="class in org.apache.hadoop.hbase.master">TestCatalogJanitor</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#beforeClass--">beforeClass()</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html" title="class in org.apache.hadoop.hbase.regionserver">TestCleanupCompactedFileOnRegionClose</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestParallelPut.html#beforeClass--">beforeClass()</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestParallelPut.html" title="class in org.apache.hadoop.hbase.regionserver">TestParallelPut</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.html#beforeClass--">beforeClass()</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionReplicasWithRestartScenarios.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionReplicasWithRestartScenarios</a></dt>
@@ -5525,6 +5529,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestCellSkipListSet.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestCellSkipListSet.html" title="class in org.apache.hadoop.hbase.regionserver">TestCellSkipListSet</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html" title="class in org.apache.hadoop.hbase.regionserver">TestCleanupCompactedFileOnRegionClose</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html" title="class in org.apache.hadoop.hbase.regionserver">TestClearRegionBlockCache</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestClusterId.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestClusterId.html" title="class in org.apache.hadoop.hbase.regionserver">TestClusterId</a></dt>
@@ -47189,10 +47195,16 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestServerNonceManager.html#testCleanup--">testCleanup()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestServerNonceManager.html" title="class in org.apache.hadoop.hbase.regionserver">TestServerNonceManager</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCleanupCompactedFileOnRegionClose</span></a> - Class in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#TestCleanupCompactedFileOnRegionClose--">TestCleanupCompactedFileOnRegionClose()</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html" title="class in org.apache.hadoop.hbase.regionserver">TestCleanupCompactedFileOnRegionClose</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/TestReplicationSourceManager.html#testCleanupFailoverQueues--">testCleanupFailoverQueues()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/TestReplicationSourceManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">TestReplicationSourceManager</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestCoprocessorClassLoader.html#testCleanupOldJars--">testCleanupOldJars()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestCoprocessorClassLoader.html" title="class in org.apache.hadoop.hbase.util">TestCoprocessorClassLoader</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#testCleanupOnClose--">testCleanupOnClose()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html" title="class in org.apache.hadoop.hbase.regionserver">TestCleanupCompactedFileOnRegionClose</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/TestReplicationSourceManager.html#testCleanupUnknownPeerZNode--">testCleanupUnknownPeerZNode()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/TestReplicationSourceManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">TestReplicationSourceManager</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/TestZKNodeTracker.html#testCleanZNode--">testCleanZNode()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestZKNodeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">TestZKNodeTracker</a></dt>
@@ -53354,6 +53366,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestAMServerFailedOpen.html#testIOExceptionOnAssignment--">testIOExceptionOnAssignment()</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestAMServerFailedOpen.html" title="class in org.apache.hadoop.hbase.master.assignment">TestAMServerFailedOpen</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#testIOExceptionThrownOnClose--">testIOExceptionThrownOnClose()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html" title="class in org.apache.hadoop.hbase.regionserver">TestCleanupCompactedFileOnRegionClose</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/TestIOFencing.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestIOFencing</span></a> - Class in <a href="org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></dt>
 <dd>
 <div class="block">Test for the case where a regionserver going down has enough cycles to do damage to regions that
@@ -53415,6 +53429,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestFSUtils.html#testIsHDFS--">testIsHDFS()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestFSUtils.html" title="class in org.apache.hadoop.hbase.util">TestFSUtils</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestMetaTableAccessor.html#testIsMetaWhenAllHealthy--">testIsMetaWhenAllHealthy()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestMetaTableAccessor.html" title="class in org.apache.hadoop.hbase">TestMetaTableAccessor</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestMetaTableAccessor.html#testIsMetaWhenMetaGoesOffline--">testIsMetaWhenMetaGoesOffline()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestMetaTableAccessor.html" title="class in org.apache.hadoop.hbase">TestMetaTableAccessor</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestFSHDFSUtils.html#testIsSameHdfs-int-">testIsSameHdfs(int)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestFSHDFSUtils.html" title="class in org.apache.hadoop.hbase.util">TestFSHDFSUtils</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TestFSHDFSUtils.html#testIsSameHdfs--">testIsSameHdfs()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestFSHDFSUtils.html" title="class in org.apache.hadoop.hbase.util">TestFSHDFSUtils</a></dt>
@@ -67241,6 +67259,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALPerformanceEvaluation.html#UTIL">UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="org/apache/hadoop/hbase/procedure2/store/wal/ProcedureWALPerformanceEvaluation.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">ProcedureWALPerformanceEvaluation</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html#util">util</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html" title="class in org.apache.hadoop.hbase.regionserver">TestCleanupCompactedFileOnRegionClose</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestCompaction.html#UTIL">UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestCompaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompaction</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestCompactionFileNotFound.html#util">util</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestCompactionFileNotFound.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactionFileNotFound</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInCompletionHStore.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInCompletionHStore.html b/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInCompletionHStore.html
index 0d6c469..35b01c9 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInCompletionHStore.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestIOFencing.BlockCompactionsInCompletionHStore.html
@@ -206,7 +206,7 @@ extends org.apache.hadoop.hbase.regionserver.HStore</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HStore</h3>
-<code>add, add, addChangedReaderObserver, areWritesEnabled, assertBulkLoadHFileOk, bulkLoadHFile, bulkLoadHFile, cancelRequestedCompaction, canSplit, close, closeAndArchiveCompactedFiles, compact, compactRecentForTestingAssumingDefaultPolicy, createCacheConf, createFlushContext, createScanner, createStoreEngine, createStoreFileAndReader, createWriterInTmp, deleteChangedReaderObserver, deregisterChildren, determineTTLFromFamily, doCompaction, flushCache, getAvgStoreFileAge, getBlockingFileCount, getBytesPerChecksum, getCacheConfig, getChecksumType, getCloseCheckInterval, getColumnFamilyDescriptor, getColumnFamilyName, getCompactedCellsCount, getCompactedCellsSize, getCompactedFiles, getCompactedFilesCount, getCompactionCheckMultiplier, getCompactionPressure, getCompactionProgress, getCompactPriority, getComparator, getCoprocessorHost, getCurrentParallelPutCount, getDataBlockEncoder, getFileSystem, getFlushableSize, getFlushedCellsCount, getFlushedCellsSize, getFlushedOutputFileSize, 
 getHFilesSize, getHRegion, getLastCompactSize, getMajorCompactedCellsCount, getMajorCompactedCellsSize, getMaxMemStoreTS, getMaxSequenceId, getMaxStoreFileAge, getMemStoreFlushSize, getMemStoreSize, getMinStoreFileAge, getNumHFiles, getNumReferenceFiles, getOffPeakHours, getRegionFileSystem, getRegionInfo, getScanInfo, getScanner, getScanners, getScanners, getScanners, getScanners, getSize, getSmallestReadPoint, getSnapshotSize, getSplitPoint, getStoreEngine, getStorefiles, getStorefilesCount, getStorefilesRootLevelIndexSize, getStorefilesSize, getStoreFileTtl, getStoreHomedir, getStoreHomedir, getStoreSizeUncompressed, getTableName, getTotalStaticBloomSize, getTotalStaticIndexSize, hasReferences, hasTooManyStoreFiles, heapSize, isPrimaryReplicaStore, isSloppyMemStore, needsCompaction, onConfigurationChange, postSnapshotOperation, preBulkLoadHFile, preFlushSeqIDEstimation, preSnapshotOperation, recreateScanners, refreshStoreFiles, refreshStoreFiles, registerChildren, replayCompactio
 nMarker, requestCompaction, requestCompaction, shouldPerformMajorCompaction, startReplayingFromWAL, stopReplayingFromWAL, throttleCompaction, timeOfOldestEdit, toString, triggerMajorCompaction, upsert</code></li>
+<code>add, add, addChangedReaderObserver, areWritesEnabled, assertBulkLoadHFileOk, bulkLoadHFile, bulkLoadHFile, cancelRequestedCompaction, canSplit, close, closeAndArchiveCompactedFiles, closeAndArchiveCompactedFiles, compact, compactRecentForTestingAssumingDefaultPolicy, createCacheConf, createFlushContext, createScanner, createStoreEngine, createStoreFileAndReader, createWriterInTmp, deleteChangedReaderObserver, deregisterChildren, determineTTLFromFamily, doCompaction, flushCache, getAvgStoreFileAge, getBlockingFileCount, getBytesPerChecksum, getCacheConfig, getChecksumType, getCloseCheckInterval, getColumnFamilyDescriptor, getColumnFamilyName, getCompactedCellsCount, getCompactedCellsSize, getCompactedFiles, getCompactedFilesCount, getCompactionCheckMultiplier, getCompactionPressure, getCompactionProgress, getCompactPriority, getComparator, getCoprocessorHost, getCurrentParallelPutCount, getDataBlockEncoder, getFileSystem, getFlushableSize, getFlushedCellsCount, getFlushedCellsS
 ize, getFlushedOutputFileSize, getHFilesSize, getHRegion, getLastCompactSize, getMajorCompactedCellsCount, getMajorCompactedCellsSize, getMaxMemStoreTS, getMaxSequenceId, getMaxStoreFileAge, getMemStoreFlushSize, getMemStoreSize, getMinStoreFileAge, getNumHFiles, getNumReferenceFiles, getOffPeakHours, getRegionFileSystem, getRegionInfo, getScanInfo, getScanner, getScanners, getScanners, getScanners, getScanners, getSize, getSmallestReadPoint, getSnapshotSize, getSplitPoint, getStoreEngine, getStorefiles, getStorefilesCount, getStorefilesRootLevelIndexSize, getStorefilesSize, getStoreFileTtl, getStoreHomedir, getStoreHomedir, getStoreSizeUncompressed, getTableName, getTotalStaticBloomSize, getTotalStaticIndexSize, hasReferences, hasTooManyStoreFiles, heapSize, isPrimaryReplicaStore, isSloppyMemStore, needsCompaction, onConfigurationChange, postSnapshotOperation, preBulkLoadHFile, preFlushSeqIDEstimation, preSnapshotOperation, recreateScanners, refreshStoreFiles, refreshStoreFiles, re
 gisterChildren, replayCompactionMarker, requestCompaction, requestCompaction, shouldPerformMajorCompaction, startReplayingFromWAL, stopReplayingFromWAL, throttleCompaction, timeOfOldestEdit, toString, triggerMajorCompaction, upsert</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHMaster.html b/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHMaster.html
index ef1c5ca..4b63c67 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHMaster.html
@@ -232,7 +232,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.HMaster</h3>
-<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createRpcServices, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessor
 Host, getMasterCoprocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationLoad, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getSyncReplicationReplayWALManager, getTableDescriptors, getTableStateManager, getUseThisHostnameInstead, getWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isInitialized, isInMai
 ntenanceMode, isNormalizerOn, isSplitOrMergeEnabled, listDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, transitReplicationPeerSyncReplicationState, truncateTable, updateConfigurationForQuotasObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
+<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createRpcServices, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessor
 Host, getMasterCoprocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationLoad, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getSyncReplicationReplayWALManager, getTableDescriptors, getTableStateManager, getUseThisHostnameInstead, getWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isInitialized, isInMai
 ntenanceMode, isNormalizerOn, isSplitOrMergeEnabled, listDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, transitReplicationPeerSyncReplicationState, truncateTable, updateConfigurationForQuotasObserver, updateReplicationPeerConfig, waitForMasterActive, waitUntilMetaOnline, waitUntilNamespaceOnline</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html b/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html
index d2fd7c0..e434928 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>abstract static class <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.188">TestMetaTableAccessor.MetaTask</a>
+<pre>abstract static class <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.204">TestMetaTableAccessor.MetaTask</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></pre>
 <div class="block">Thread that runs a MetaTableAccessor task until asked stop.</div>
 </li>
@@ -265,7 +265,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>stop</h4>
-<pre>boolean <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html#line.189">stop</a></pre>
+<pre>boolean <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html#line.205">stop</a></pre>
 </li>
 </ul>
 <a name="count">
@@ -274,7 +274,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>count</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html#line.190">count</a></pre>
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html#line.206">count</a></pre>
 </li>
 </ul>
 <a name="t">
@@ -283,7 +283,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>t</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a> <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html#line.191">t</a></pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a> <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html#line.207">t</a></pre>
 </li>
 </ul>
 <a name="connection">
@@ -292,7 +292,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>connection</h4>
-<pre>final&nbsp;org.apache.hadoop.hbase.client.Connection <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html#line.192">connection</a></pre>
+<pre>final&nbsp;org.apache.hadoop.hbase.client.Connection <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html#line.208">connection</a></pre>
 </li>
 </ul>
 </li>
@@ -309,7 +309,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MetaTask</h4>
-<pre><a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html#line.194">MetaTask</a>(org.apache.hadoop.hbase.client.Connection&nbsp;connection,
+<pre><a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html#line.210">MetaTask</a>(org.apache.hadoop.hbase.client.Connection&nbsp;connection,
          <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>
 </li>
 </ul>
@@ -327,7 +327,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html#line.200">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html#line.216">run</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>
@@ -342,7 +342,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isProgressing</h4>
-<pre>boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html#line.215">isProgressing</a>()
+<pre>boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html#line.231">isProgressing</a>()
                throws <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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -356,7 +356,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&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/TestMetaTableAccessor.MetaTask.html#line.226">toString</a>()</pre>
+<pre>public&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/TestMetaTableAccessor.MetaTask.html#line.242">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></code></dd>
@@ -369,7 +369,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>metaTask</h4>
-<pre>abstract&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html#line.231">metaTask</a>()
+<pre>abstract&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html#line.247">metaTask</a>()
                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcScheduler.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcScheduler.html b/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcScheduler.html
index daac3cb..c5d637d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcScheduler.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcScheduler.html
@@ -123,7 +123,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.751">TestMetaTableAccessor.SpyingRpcScheduler</a>
+<pre>public static class <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.767">TestMetaTableAccessor.SpyingRpcScheduler</a>
 extends <a href="../../../../org/apache/hadoop/hbase/ipc/DelegatingRpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc">DelegatingRpcScheduler</a></pre>
 </li>
 </ul>
@@ -247,7 +247,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/ipc/DelegatingRpcScheduler.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>numPriorityCalls</h4>
-<pre>long <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcScheduler.html#line.752">numPriorityCalls</a></pre>
+<pre>long <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcScheduler.html#line.768">numPriorityCalls</a></pre>
 </li>
 </ul>
 </li>
@@ -264,7 +264,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/ipc/DelegatingRpcScheduler.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SpyingRpcScheduler</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcScheduler.html#line.754">SpyingRpcScheduler</a>(org.apache.hadoop.hbase.ipc.RpcScheduler&nbsp;delegate)</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcScheduler.html#line.770">SpyingRpcScheduler</a>(org.apache.hadoop.hbase.ipc.RpcScheduler&nbsp;delegate)</pre>
 </li>
 </ul>
 </li>
@@ -281,7 +281,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/ipc/DelegatingRpcScheduler.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>dispatch</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcScheduler.html#line.759">dispatch</a>(org.apache.hadoop.hbase.ipc.CallRunner&nbsp;task)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcScheduler.html#line.775">dispatch</a>(org.apache.hadoop.hbase.ipc.CallRunner&nbsp;task)
                  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>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcSchedulerFactory.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcSchedulerFactory.html b/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcSchedulerFactory.html
index 4c347a1..894cd7b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcSchedulerFactory.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcSchedulerFactory.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.743">TestMetaTableAccessor.SpyingRpcSchedulerFactory</a>
+<pre>public static class <a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.html#line.759">TestMetaTableAccessor.SpyingRpcSchedulerFactory</a>
 extends org.apache.hadoop.hbase.regionserver.SimpleRpcSchedulerFactory</pre>
 </li>
 </ul>
@@ -200,7 +200,7 @@ extends org.apache.hadoop.hbase.regionserver.SimpleRpcSchedulerFactory</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SpyingRpcSchedulerFactory</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcSchedulerFactory.html#line.743">SpyingRpcSchedulerFactory</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcSchedulerFactory.html#line.759">SpyingRpcSchedulerFactory</a>()</pre>
 </li>
 </ul>
 </li>
@@ -217,7 +217,7 @@ extends org.apache.hadoop.hbase.regionserver.SimpleRpcSchedulerFactory</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>create</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.ipc.RpcScheduler&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcSchedulerFactory.html#line.745">create</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;org.apache.hadoop.hbase.ipc.RpcScheduler&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestMetaTableAccessor.SpyingRpcSchedulerFactory.html#line.761">create</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                        org.apache.hadoop.hbase.ipc.PriorityFunction&nbsp;priority,
                                                        org.apache.hadoop.hbase.Abortable&nbsp;server)</pre>
 <dl>


[18/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
index eecf20f..df4d2d2 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
@@ -1218,664 +1218,665 @@
 <span class="sourceLineNo">1210</span>    long startTime = System.nanoTime();<a name="line.1210"></a>
 <span class="sourceLineNo">1211</span>    LOG.debug("Joining cluster...");<a name="line.1211"></a>
 <span class="sourceLineNo">1212</span><a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>    // Scan hbase:meta to build list of existing regions, servers, and assignment<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>    // hbase:meta is online when we get to here and TableStateManager has been started.<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>    loadMeta();<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span><a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>    while (master.getServerManager().countOfRegionServers() &lt; 1) {<a name="line.1217"></a>
-<span class="sourceLineNo">1218</span>      LOG.info("Waiting for RegionServers to join; current count={}",<a name="line.1218"></a>
-<span class="sourceLineNo">1219</span>        master.getServerManager().countOfRegionServers());<a name="line.1219"></a>
-<span class="sourceLineNo">1220</span>      Threads.sleep(250);<a name="line.1220"></a>
-<span class="sourceLineNo">1221</span>    }<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>    LOG.info("Number of RegionServers={}", master.getServerManager().countOfRegionServers());<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span><a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>    processOfflineRegions();<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span><a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>    // Start the RIT chore<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span>    master.getMasterProcedureExecutor().addChore(this.ritChore);<a name="line.1227"></a>
-<span class="sourceLineNo">1228</span><a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>    long costMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime);<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>    LOG.info("Joined the cluster in {}", StringUtils.humanTimeDiff(costMs));<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>  }<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span><a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>  // Create assign procedure for offline regions.<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>  // Just follow the old processofflineServersWithOnlineRegions method. Since now we do not need to<a name="line.1234"></a>
-<span class="sourceLineNo">1235</span>  // deal with dead server any more, we only deal with the regions in OFFLINE state in this method.<a name="line.1235"></a>
-<span class="sourceLineNo">1236</span>  // And this is a bit strange, that for new regions, we will add it in CLOSED state instead of<a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>  // OFFLINE state, and usually there will be a procedure to track them. The<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>  // processofflineServersWithOnlineRegions is a legacy from long ago, as things are going really<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>  // different now, maybe we do not need this method any more. Need to revisit later.<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span>  private void processOfflineRegions() {<a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>    List&lt;RegionInfo&gt; offlineRegions = regionStates.getRegionStates().stream()<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>      .filter(RegionState::isOffline).filter(s -&gt; isTableEnabled(s.getRegion().getTable()))<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      .map(RegionState::getRegion).collect(Collectors.toList());<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>    if (!offlineRegions.isEmpty()) {<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>      master.getMasterProcedureExecutor().submitProcedures(<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>        master.getAssignmentManager().createRoundRobinAssignProcedures(offlineRegions));<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    }<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span>  }<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span><a name="line.1249"></a>
-<span class="sourceLineNo">1250</span>  private void loadMeta() throws IOException {<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // TODO: use a thread pool<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    regionStateStore.visitMeta(new RegionStateStore.RegionStateVisitor() {<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>      @Override<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      public void visitRegionState(Result result, final RegionInfo regionInfo, final State state,<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>          final ServerName regionLocation, final ServerName lastHost, final long openSeqNum) {<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>        if (state == null &amp;&amp; regionLocation == null &amp;&amp; lastHost == null &amp;&amp;<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>            openSeqNum == SequenceId.NO_SEQUENCE_ID) {<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>          // This is a row with nothing in it.<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>          LOG.warn("Skipping empty row={}", result);<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>          return;<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>        }<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>        State localState = state;<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>        if (localState == null) {<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span>          // No region state column data in hbase:meta table! Are I doing a rolling upgrade from<a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>          // hbase1 to hbase2? Am I restoring a SNAPSHOT or otherwise adding a region to hbase:meta?<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>          // In any of these cases, state is empty. For now, presume OFFLINE but there are probably<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>          // cases where we need to probe more to be sure this correct; TODO informed by experience.<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>          LOG.info(regionInfo.getEncodedName() + " regionState=null; presuming " + State.OFFLINE);<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span><a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>          localState = State.OFFLINE;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>        }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span>        RegionStateNode regionNode = regionStates.getOrCreateRegionStateNode(regionInfo);<a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>        // Do not need to lock on regionNode, as we can make sure that before we finish loading<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>        // meta, all the related procedures can not be executed. The only exception is formeta<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>        // region related operations, but here we do not load the informations for meta region.<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>        regionNode.setState(localState);<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span>        regionNode.setLastHost(lastHost);<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>        regionNode.setRegionLocation(regionLocation);<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>        regionNode.setOpenSeqNum(openSeqNum);<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span><a name="line.1280"></a>
-<span class="sourceLineNo">1281</span>        if (localState == State.OPEN) {<a name="line.1281"></a>
-<span class="sourceLineNo">1282</span>          assert regionLocation != null : "found null region location for " + regionNode;<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span>          regionStates.addRegionToServer(regionNode);<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>        } else if (localState == State.OFFLINE || regionInfo.isOffline()) {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>          regionStates.addToOfflineRegions(regionNode);<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>        }<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span>      }<a name="line.1287"></a>
-<span class="sourceLineNo">1288</span>    });<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span><a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    // every assignment is blocked until meta is loaded.<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>    wakeMetaLoadedEvent();<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span>  }<a name="line.1292"></a>
-<span class="sourceLineNo">1293</span><a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>  /**<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>   * Used to check if the meta loading is done.<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span>   * &lt;p/&gt;<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span>   * if not we throw PleaseHoldException since we are rebuilding the RegionStates<a name="line.1297"></a>
-<span class="sourceLineNo">1298</span>   * @param hri region to check if it is already rebuild<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>   * @throws PleaseHoldException if meta has not been loaded yet<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>   */<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>  private void checkMetaLoaded(RegionInfo hri) throws PleaseHoldException {<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span>    if (!isRunning()) {<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>      throw new PleaseHoldException("AssignmentManager not running");<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>    }<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>    boolean meta = isMetaRegion(hri);<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>    boolean metaLoaded = isMetaLoaded();<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span>    if (!meta &amp;&amp; !metaLoaded) {<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>      throw new PleaseHoldException(<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>        "Master not fully online; hbase:meta=" + meta + ", metaLoaded=" + metaLoaded);<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    }<a name="line.1310"></a>
-<span class="sourceLineNo">1311</span>  }<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span><a name="line.1312"></a>
-<span class="sourceLineNo">1313</span>  // ============================================================================================<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  //  TODO: Metrics<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>  // ============================================================================================<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span>  public int getNumRegionsOpened() {<a name="line.1316"></a>
-<span class="sourceLineNo">1317</span>    // TODO: Used by TestRegionPlacement.java and assume monotonically increasing value<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span>    return 0;<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>  }<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span><a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>  public void submitServerCrash(final ServerName serverName, final boolean shouldSplitWal) {<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span>    boolean carryingMeta = isCarryingMeta(serverName);<a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>    ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec = this.master.getMasterProcedureExecutor();<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>    procExec.submitProcedure(new ServerCrashProcedure(procExec.getEnvironment(), serverName,<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>      shouldSplitWal, carryingMeta));<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>    LOG.debug("Added=" + serverName +<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span>      " to dead servers, submitted shutdown handler to be executed meta=" + carryingMeta);<a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>  }<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span><a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>  public void offlineRegion(final RegionInfo regionInfo) {<a name="line.1330"></a>
-<span class="sourceLineNo">1331</span>    // TODO used by MasterRpcServices<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span>    RegionStateNode node = regionStates.getRegionStateNode(regionInfo);<a name="line.1332"></a>
-<span class="sourceLineNo">1333</span>    if (node != null) {<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span>      node.offline();<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    }<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span>  }<a name="line.1336"></a>
-<span class="sourceLineNo">1337</span><a name="line.1337"></a>
-<span class="sourceLineNo">1338</span>  public void onlineRegion(final RegionInfo regionInfo, final ServerName serverName) {<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>    // TODO used by TestSplitTransactionOnCluster.java<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>  }<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span><a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>  public Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; getSnapShotOfAssignment(<a name="line.1342"></a>
-<span class="sourceLineNo">1343</span>      final Collection&lt;RegionInfo&gt; regions) {<a name="line.1343"></a>
-<span class="sourceLineNo">1344</span>    return regionStates.getSnapShotOfAssignment(regions);<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span>  }<a name="line.1345"></a>
-<span class="sourceLineNo">1346</span><a name="line.1346"></a>
-<span class="sourceLineNo">1347</span>  // ============================================================================================<a name="line.1347"></a>
-<span class="sourceLineNo">1348</span>  //  TODO: UTILS/HELPERS?<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span>  // ============================================================================================<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span>  /**<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span>   * Used by the client (via master) to identify if all regions have the schema updates<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span>   *<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span>   * @param tableName<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span>   * @return Pair indicating the status of the alter command (pending/total)<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span>   * @throws IOException<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>   */<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>  public Pair&lt;Integer, Integer&gt; getReopenStatus(TableName tableName) {<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span>    if (isTableDisabled(tableName)) return new Pair&lt;Integer, Integer&gt;(0, 0);<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span><a name="line.1359"></a>
-<span class="sourceLineNo">1360</span>    final List&lt;RegionState&gt; states = regionStates.getTableRegionStates(tableName);<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>    int ritCount = 0;<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>    for (RegionState regionState: states) {<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span>      if (!regionState.isOpened()) ritCount++;<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>    }<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span>    return new Pair&lt;Integer, Integer&gt;(ritCount, states.size());<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span>  }<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span><a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>  // ============================================================================================<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>  //  TODO: Region State In Transition<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>  // ============================================================================================<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>  public boolean hasRegionsInTransition() {<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>    return regionStates.hasRegionsInTransition();<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span>  }<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span><a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>  public List&lt;RegionStateNode&gt; getRegionsInTransition() {<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>    return regionStates.getRegionsInTransition();<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>  }<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span><a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>  public List&lt;RegionInfo&gt; getAssignedRegions() {<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span>    return regionStates.getAssignedRegions();<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>  }<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span><a name="line.1382"></a>
-<span class="sourceLineNo">1383</span>  public RegionInfo getRegionInfo(final byte[] regionName) {<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>    final RegionStateNode regionState = regionStates.getRegionStateNodeFromName(regionName);<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>    return regionState != null ? regionState.getRegionInfo() : null;<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>  }<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span><a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>  // ============================================================================================<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span>  //  Expected states on region state transition.<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>  //  Notice that there is expected states for transiting to OPENING state, this is because SCP.<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>  //  See the comments in regionOpening method for more details.<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>  // ============================================================================================<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>  private static final State[] STATES_EXPECTED_ON_OPEN = {<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span>    State.OPENING, // Normal case<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>    State.OPEN // Retrying<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>  };<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span><a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>  private static final State[] STATES_EXPECTED_ON_CLOSING = {<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>    State.OPEN, // Normal case<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>    State.CLOSING, // Retrying<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>    State.SPLITTING, // Offline the split parent<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>    State.MERGING // Offline the merge parents<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span>  };<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span><a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>  private static final State[] STATES_EXPECTED_ON_CLOSED = {<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>    State.CLOSING, // Normal case<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>    State.CLOSED // Retrying<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>  };<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span><a name="line.1409"></a>
-<span class="sourceLineNo">1410</span>  // This is for manually scheduled region assign, can add other states later if we find out other<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>  // usages<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>  private static final State[] STATES_EXPECTED_ON_ASSIGN = { State.CLOSED, State.OFFLINE };<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span><a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>  // We only allow unassign or move a region which is in OPEN state.<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>  private static final State[] STATES_EXPECTED_ON_UNASSIGN_OR_MOVE = { State.OPEN };<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span><a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>  // ============================================================================================<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>  //  Region Status update<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>  //  Should only be called in TransitRegionStateProcedure<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>  // ============================================================================================<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>  private void transitStateAndUpdate(RegionStateNode regionNode, RegionState.State newState,<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span>      RegionState.State... expectedStates) throws IOException {<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>    RegionState.State state = regionNode.getState();<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>    regionNode.transitionState(newState, expectedStates);<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>    boolean succ = false;<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>    try {<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>      regionStateStore.updateRegionLocation(regionNode);<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>      succ = true;<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>    } finally {<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>      if (!succ) {<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>        // revert<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>        regionNode.setState(state);<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>      }<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>    }<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>  }<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span><a name="line.1436"></a>
-<span class="sourceLineNo">1437</span>  // should be called within the synchronized block of RegionStateNode<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>  void regionOpening(RegionStateNode regionNode) throws IOException {<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span>    // As in SCP, for performance reason, there is no TRSP attached with this region, we will not<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span>    // update the region state, which means that the region could be in any state when we want to<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>    // assign it after a RS crash. So here we do not pass the expectedStates parameter.<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>    transitStateAndUpdate(regionNode, State.OPENING);<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>    regionStates.addRegionToServer(regionNode);<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span>    // update the operation count metrics<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span>    metrics.incrementOperationCounter();<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>  }<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span><a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>  // should be called within the synchronized block of RegionStateNode.<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span>  // The parameter 'giveUp' means whether we will try to open the region again, if it is true, then<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>  // we will persist the FAILED_OPEN state into hbase:meta.<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>  void regionFailedOpen(RegionStateNode regionNode, boolean giveUp) throws IOException {<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span>    RegionState.State state = regionNode.getState();<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>    ServerName regionLocation = regionNode.getRegionLocation();<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>    if (giveUp) {<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>      regionNode.setState(State.FAILED_OPEN);<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span>      regionNode.setRegionLocation(null);<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>      boolean succ = false;<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>      try {<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>        regionStateStore.updateRegionLocation(regionNode);<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>        succ = true;<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span>      } finally {<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>        if (!succ) {<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span>          // revert<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>          regionNode.setState(state);<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>          regionNode.setRegionLocation(regionLocation);<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>        }<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>      }<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>    }<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>    if (regionLocation != null) {<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>      regionStates.removeRegionFromServer(regionLocation, regionNode);<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>    }<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>  }<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span><a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>  // should be called within the synchronized block of RegionStateNode<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>  void regionOpened(RegionStateNode regionNode) throws IOException {<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span>    // TODO: OPENING Updates hbase:meta too... we need to do both here and there?<a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>    // That is a lot of hbase:meta writing.<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>    transitStateAndUpdate(regionNode, State.OPEN, STATES_EXPECTED_ON_OPEN);<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>    RegionInfo hri = regionNode.getRegionInfo();<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span>    if (isMetaRegion(hri)) {<a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>      // Usually we'd set a table ENABLED at this stage but hbase:meta is ALWAYs enabled, it<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>      // can't be disabled -- so skip the RPC (besides... enabled is managed by TableStateManager<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>      // which is backed by hbase:meta... Avoid setting ENABLED to avoid having to update state<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>      // on table that contains state.<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span>      setMetaAssigned(hri, true);<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>    }<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>    regionStates.addRegionToServer(regionNode);<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>    regionStates.removeFromFailedOpen(hri);<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>  }<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span><a name="line.1490"></a>
-<span class="sourceLineNo">1491</span>  // should be called within the synchronized block of RegionStateNode<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>  void regionClosing(RegionStateNode regionNode) throws IOException {<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>    transitStateAndUpdate(regionNode, State.CLOSING, STATES_EXPECTED_ON_CLOSING);<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span><a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>    RegionInfo hri = regionNode.getRegionInfo();<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span>    // Set meta has not initialized early. so people trying to create/edit tables will wait<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>    if (isMetaRegion(hri)) {<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>      setMetaAssigned(hri, false);<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>    }<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>    regionStates.addRegionToServer(regionNode);<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>    // update the operation count metrics<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>    metrics.incrementOperationCounter();<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span>  }<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span><a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>  // should be called within the synchronized block of RegionStateNode<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>  // The parameter 'normally' means whether we are closed cleanly, if it is true, then it means that<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>  // we are closed due to a RS crash.<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>  void regionClosed(RegionStateNode regionNode, boolean normally) throws IOException {<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>    RegionState.State state = regionNode.getState();<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>    ServerName regionLocation = regionNode.getRegionLocation();<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>    if (normally) {<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>      regionNode.transitionState(State.CLOSED, STATES_EXPECTED_ON_CLOSED);<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>    } else {<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span>      // For SCP<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>      regionNode.transitionState(State.ABNORMALLY_CLOSED);<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span>    }<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span>    regionNode.setRegionLocation(null);<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>    boolean succ = false;<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>    try {<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>      regionStateStore.updateRegionLocation(regionNode);<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>      succ = true;<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>    } finally {<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span>      if (!succ) {<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>        // revert<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span>        regionNode.setState(state);<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>        regionNode.setRegionLocation(regionLocation);<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>      }<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>    }<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>    if (regionLocation != null) {<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>      regionNode.setLastHost(regionLocation);<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>      regionStates.removeRegionFromServer(regionLocation, regionNode);<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>    }<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span>  }<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span><a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>  public void markRegionAsSplit(final RegionInfo parent, final ServerName serverName,<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>      final RegionInfo daughterA, final RegionInfo daughterB) throws IOException {<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>    // Update hbase:meta. Parent will be marked offline and split up in hbase:meta.<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span>    // The parent stays in regionStates until cleared when removed by CatalogJanitor.<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>    // Update its state in regionStates to it shows as offline and split when read<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>    // later figuring what regions are in a table and what are not: see<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>    // regionStates#getRegionsOfTable<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>    final RegionStateNode node = regionStates.getOrCreateRegionStateNode(parent);<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>    node.setState(State.SPLIT);<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>    final RegionStateNode nodeA = regionStates.getOrCreateRegionStateNode(daughterA);<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span>    nodeA.setState(State.SPLITTING_NEW);<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>    final RegionStateNode nodeB = regionStates.getOrCreateRegionStateNode(daughterB);<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span>    nodeB.setState(State.SPLITTING_NEW);<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span><a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>    regionStateStore.splitRegion(parent, daughterA, daughterB, serverName);<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span>    if (shouldAssignFavoredNodes(parent)) {<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>      List&lt;ServerName&gt; onlineServers = this.master.getServerManager().getOnlineServersList();<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>      ((FavoredNodesPromoter)getBalancer()).<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>          generateFavoredNodesForDaughter(onlineServers, parent, daughterA, daughterB);<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span>    }<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>  }<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span><a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>  /**<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>   * When called here, the merge has happened. The two merged regions have been<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>   * unassigned and the above markRegionClosed has been called on each so they have been<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>   * disassociated from a hosting Server. The merged region will be open after this call. The<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span>   * merged regions are removed from hbase:meta below&gt; Later they are deleted from the filesystem<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>   * by the catalog janitor running against hbase:meta. It notices when the merged region no<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>   * longer holds references to the old regions.<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>   */<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>  public void markRegionAsMerged(final RegionInfo child, final ServerName serverName,<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>      final RegionInfo mother, final RegionInfo father) throws IOException {<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>    final RegionStateNode node = regionStates.getOrCreateRegionStateNode(child);<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>    node.setState(State.MERGED);<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>    regionStates.deleteRegion(mother);<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>    regionStates.deleteRegion(father);<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>    regionStateStore.mergeRegions(child, mother, father, serverName);<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>    if (shouldAssignFavoredNodes(child)) {<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>      ((FavoredNodesPromoter)getBalancer()).<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>        generateFavoredNodesForMergedRegion(child, mother, father);<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>    }<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>  }<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span><a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>  /*<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>   * Favored nodes should be applied only when FavoredNodes balancer is configured and the region<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>   * belongs to a non-system table.<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>   */<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>  private boolean shouldAssignFavoredNodes(RegionInfo region) {<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>    return this.shouldAssignRegionsWithFavoredNodes &amp;&amp;<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span>        FavoredNodesManager.isFavoredNodeApplicable(region);<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>  }<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span><a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>  // ============================================================================================<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>  //  Assign Queue (Assign/Balance)<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span>  // ============================================================================================<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>  private final ArrayList&lt;RegionStateNode&gt; pendingAssignQueue = new ArrayList&lt;RegionStateNode&gt;();<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>  private final ReentrantLock assignQueueLock = new ReentrantLock();<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>  private final Condition assignQueueFullCond = assignQueueLock.newCondition();<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span><a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>  /**<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>   * Add the assign operation to the assignment queue.<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>   * The pending assignment operation will be processed,<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span>   * and each region will be assigned by a server using the balancer.<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>   */<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>  protected void queueAssign(final RegionStateNode regionNode) {<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>    regionNode.getProcedureEvent().suspend();<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span><a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>    // TODO: quick-start for meta and the other sys-tables?<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>    assignQueueLock.lock();<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>    try {<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>      pendingAssignQueue.add(regionNode);<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>      if (regionNode.isSystemTable() ||<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>          pendingAssignQueue.size() == 1 ||<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span>          pendingAssignQueue.size() &gt;= assignDispatchWaitQueueMaxSize) {<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>        assignQueueFullCond.signal();<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>      }<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>    } finally {<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span>      assignQueueLock.unlock();<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>    }<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>  }<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span><a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>  private void startAssignmentThread() {<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>    // Get Server Thread name. Sometimes the Server is mocked so may not implement HasThread.<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>    // For example, in tests.<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>    String name = master instanceof HasThread? ((HasThread)master).getName():<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>        master.getServerName().toShortString();<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span>    assignThread = new Thread(name) {<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>      @Override<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>      public void run() {<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>        while (isRunning()) {<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>          processAssignQueue();<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>        }<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>        pendingAssignQueue.clear();<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>      }<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>    };<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>    assignThread.setDaemon(true);<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>    assignThread.start();<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>  }<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span><a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>  private void stopAssignmentThread() {<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>    assignQueueSignal();<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>    try {<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>      while (assignThread.isAlive()) {<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>        assignQueueSignal();<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>        assignThread.join(250);<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>      }<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>    } catch (InterruptedException e) {<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>      LOG.warn("join interrupted", e);<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span>      Thread.currentThread().interrupt();<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>    }<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>  }<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span><a name="line.1646"></a>
-<span class="sourceLineNo">1647</span>  private void assignQueueSignal() {<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span>    assignQueueLock.lock();<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span>    try {<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span>      assignQueueFullCond.signal();<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span>    } finally {<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span>      assignQueueLock.unlock();<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span>    }<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span>  }<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span><a name="line.1655"></a>
-<span class="sourceLineNo">1656</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings("WA_AWAIT_NOT_IN_LOOP")<a name="line.1656"></a>
-<span class="sourceLineNo">1657</span>  private HashMap&lt;RegionInfo, RegionStateNode&gt; waitOnAssignQueue() {<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span>    HashMap&lt;RegionInfo, RegionStateNode&gt; regions = null;<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span><a name="line.1659"></a>
-<span class="sourceLineNo">1660</span>    assignQueueLock.lock();<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span>    try {<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span>      if (pendingAssignQueue.isEmpty() &amp;&amp; isRunning()) {<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span>        assignQueueFullCond.await();<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span>      }<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span><a name="line.1665"></a>
-<span class="sourceLineNo">1666</span>      if (!isRunning()) return null;<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span>      assignQueueFullCond.await(assignDispatchWaitMillis, TimeUnit.MILLISECONDS);<a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>      regions = new HashMap&lt;RegionInfo, RegionStateNode&gt;(pendingAssignQueue.size());<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span>      for (RegionStateNode regionNode: pendingAssignQueue) {<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span>        regions.put(regionNode.getRegionInfo(), regionNode);<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span>      }<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span>      pendingAssignQueue.clear();<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span>    } catch (InterruptedException e) {<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span>      LOG.warn("got interrupted ", e);<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span>      Thread.currentThread().interrupt();<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span>    } finally {<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span>      assignQueueLock.unlock();<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span>    }<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span>    return regions;<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span>  }<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span><a name="line.1681"></a>
-<span class="sourceLineNo">1682</span>  private void processAssignQueue() {<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span>    final HashMap&lt;RegionInfo, RegionStateNode&gt; regions = waitOnAssignQueue();<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span>    if (regions == null || regions.size() == 0 || !isRunning()) {<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span>      return;<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span>    }<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span><a name="line.1687"></a>
-<span class="sourceLineNo">1688</span>    if (LOG.isTraceEnabled()) {<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span>      LOG.trace("PROCESS ASSIGN QUEUE regionCount=" + regions.size());<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span>    }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span><a name="line.1691"></a>
-<span class="sourceLineNo">1692</span>    // TODO: Optimize balancer. pass a RegionPlan?<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span>    final HashMap&lt;RegionInfo, ServerName&gt; retainMap = new HashMap&lt;&gt;();<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span>    final List&lt;RegionInfo&gt; userHRIs = new ArrayList&lt;&gt;(regions.size());<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span>    // Regions for system tables requiring reassignment<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span>    final List&lt;RegionInfo&gt; systemHRIs = new ArrayList&lt;&gt;();<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span>    for (RegionStateNode regionStateNode: regions.values()) {<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span>      boolean sysTable = regionStateNode.isSystemTable();<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span>      final List&lt;RegionInfo&gt; hris = sysTable? systemHRIs: userHRIs;<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span>      if (regionStateNode.getRegionLocation() != null) {<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span>        retainMap.put(regionStateNode.getRegionInfo(), regionStateNode.getRegionLocation());<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span>      } else {<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span>        hris.add(regionStateNode.getRegionInfo());<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span>      }<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span>    }<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span><a name="line.1706"></a>
-<span class="sourceLineNo">1707</span>    // TODO: connect with the listener to invalidate the cache<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span><a name="line.1708"></a>
-<span class="sourceLineNo">1709</span>    // TODO use events<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span>    List&lt;ServerName&gt; servers = master.getServerManager().createDestinationServersList();<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span>    for (int i = 0; servers.size() &lt; 1; ++i) {<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span>      // Report every fourth time around this loop; try not to flood log.<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span>      if (i % 4 == 0) {<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span>        LOG.warn("No servers available; cannot place " + regions.size() + " unassigned regions.");<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>      }<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span><a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>      if (!isRunning()) {<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span>        LOG.debug("Stopped! Dropping assign of " + regions.size() + " queued regions.");<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>        return;<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span>      }<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span>      Threads.sleep(250);<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span>      servers = master.getServerManager().createDestinationServersList();<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>    }<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span><a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>    if (!systemHRIs.isEmpty()) {<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span>      // System table regions requiring reassignment are present, get region servers<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>      // not available for system table regions<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span>      final List&lt;ServerName&gt; excludeServers = getExcludedServersForSystemTable();<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>      List&lt;ServerName&gt; serversForSysTables = servers.stream()<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>          .filter(s -&gt; !excludeServers.contains(s)).collect(Collectors.toList());<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>      if (serversForSysTables.isEmpty()) {<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>        LOG.warn("Filtering old server versions and the excluded produced an empty set; " +<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span>            "instead considering all candidate servers!");<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span>      }<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span>      LOG.debug("Processing assignQueue; systemServersCount=" + serversForSysTables.size() +<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>          ", allServersCount=" + servers.size());<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>      processAssignmentPlans(regions, null, systemHRIs,<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span>          serversForSysTables.isEmpty()? servers: serversForSysTables);<a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>    }<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span><a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>    processAssignmentPlans(regions, retainMap, userHRIs, servers);<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span>  }<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span><a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>  private void processAssignmentPlans(final HashMap&lt;RegionInfo, RegionStateNode&gt; regions,<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>      final HashMap&lt;RegionInfo, ServerName&gt; retainMap, final List&lt;RegionInfo&gt; hris,<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span>      final List&lt;ServerName&gt; servers) {<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span>    boolean isTraceEnabled = LOG.isTraceEnabled();<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>    if (isTraceEnabled) {<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span>      LOG.trace("Available servers count=" + servers.size() + ": " + servers);<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span>    }<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span><a name="line.1751"></a>
-<span class="sourceLineNo">1752</span>    final LoadBalancer balancer = getBalancer();<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span>    // ask the balancer where to place regions<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span>    if (retainMap != null &amp;&amp; !retainMap.isEmpty()) {<a name="line.1754"></a>
-<span class="sourceLineNo">1755</span>      if (isTraceEnabled) {<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span>        LOG.trace("retain assign regions=" + retainMap);<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span>      }<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span>      try {<a name="line.1758"></a>
-<span class="sourceLineNo">1759</span>        acceptPlan(regions, balancer.retainAssignment(retainMap, servers));<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span>      } catch (HBaseIOException e) {<a name="line.1760"></a>
-<span class="sourceLineNo">1761</span>        LOG.warn("unable to retain assignment", e);<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span>        addToPendingAssignment(regions, retainMap.keySet());<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span>      }<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span>    }<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span><a name="line.1765"></a>
-<span class="sourceLineNo">1766</span>    // TODO: Do we need to split retain and round-robin?<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span>    // the retain seems to fallback to round-robin/random if the region is not in the map.<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span>    if (!hris.isEmpty()) {<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span>      Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span>      if (isTraceEnabled) {<a name="line.1770"></a>
-<span class="sourceLineNo">1771</span>        LOG.trace("round robin regions=" + hris);<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span>      }<a name="line.1772"></a>
-<span class="sourceLineNo">1773</span>      try {<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span>        acceptPlan(regions, balancer.roundRobinAssignment(hris, servers));<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span>      } catch (HBaseIOException e) {<a name="line.1775"></a>
-<span class="sourceLineNo">1776</span>        LOG.warn("unable to round-robin assignment", e);<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span>        addToPendingAssignment(regions, hris);<a name="line.1777"></a>
-<span class="sourceLineNo">1778</span>      }<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span>    }<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span>  }<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span><a name="line.1781"></a>
-<span class="sourceLineNo">1782</span>  private void acceptPlan(final HashMap&lt;RegionInfo, RegionStateNode&gt; regions,<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span>      final Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; plan) throws HBaseIOException {<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span>    final ProcedureEvent&lt;?&gt;[] events = new ProcedureEvent[regions.size()];<a name="line.1784"></a>
-<span class="sourceLineNo">1785</span>    final long st = System.currentTimeMillis();<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span><a name="line.1786"></a>
-<span class="sourceLineNo">1787</span>    if (plan == null) {<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span>      throw new HBaseIOException("unable to compute plans for regions=" + regions.size());<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span>    }<a name="line.1789"></a>
-<span class="sourceLineNo">1790</span><a name="line.1790"></a>
-<span class="sourceLineNo">1791</span>    if (plan.isEmpty()) return;<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span><a name="line.1792"></a>
-<span class="sourceLineNo">1793</span>    int evcount = 0;<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span>    for (Map.Entry&lt;ServerName, List&lt;RegionInfo&gt;&gt; entry: plan.entrySet()) {<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span>      final ServerName server = entry.getKey();<a name="line.1795"></a>
-<span class="sourceLineNo">1796</span>      for (RegionInfo hri: entry.getValue()) {<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span>        final RegionStateNode regionNode = regions.get(hri);<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span>        regionNode.setRegionLocation(server);<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span>        events[evcount++] = regionNode.getProcedureEvent();<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span>      }<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span>    }<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span>    ProcedureEvent.wakeEvents(getProcedureScheduler(), events);<a name="line.1802"></a>
-<span class="sourceLineNo">1803</span><a name="line.1803"></a>
-<span class="sourceLineNo">1804</span>    final long et = System.currentTimeMillis();<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span>    if (LOG.isTraceEnabled()) {<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span>      LOG.trace("ASSIGN ACCEPT " + events.length + " -&gt; " +<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span>          StringUtils.humanTimeDiff(et - st));<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span>    }<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span>  }<a name="line.1809"></a>
-<span class="sourceLineNo">1810</span><a name="line.1810"></a>
-<span class="sourceLineNo">1811</span>  private void addToPendingAssignment(final HashMap&lt;RegionInfo, RegionStateNode&gt; regions,<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span>      final Collection&lt;RegionInfo&gt; pendingRegions) {<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span>    assignQueueLock.lock();<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span>    try {<a name="line.1814"></a>
-<span class="sourceLineNo">1815</span>      for (RegionInfo hri: pendingRegions) {<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span>        pendingAssignQueue.add(regions.get(hri));<a name="line.1816"></a>
-<span class="sourceLineNo">1817</span>      }<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span>    } finally {<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span>      assignQueueLock.unlock();<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span>    }<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span>  }<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span><a name="line.1822"></a>
-<span class="sourceLineNo">1823</span>  /**<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span>   * Get a list of servers that this region cannot be assigned to.<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span>   * For system tables, we must assign them to a server with highest version.<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span>   */<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span>  public List&lt;ServerName&gt; getExcludedServersForSystemTable() {<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span>    // TODO: This should be a cached list kept by the ServerManager rather than calculated on each<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span>    // move or system region assign. The RegionServerTracker keeps list of online Servers with<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span>    // RegionServerInfo that includes Version.<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span>    List&lt;Pair&lt;ServerName, String&gt;&gt; serverList = master.getServerManager().getOnlineServersList()<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span>        .stream()<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span>        .map((s)-&gt;new Pair&lt;&gt;(s, master.getRegionServerVersion(s)))<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span>        .collect(Collectors.toList());<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span>    if (serverList.isEmpty()) {<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span>      return Collections.emptyList();<a name="line.1836"></a>
-<span class="sourceLineNo">1837</span>    }<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span>    String highestVersion = Collections.max(serverList,<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span>        (o1, o2) -&gt; VersionInfo.compareVersion(o1.getSecond(), o2.getSecond())).getSecond();<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span>    return serverList.stream()<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span>        .filter((p)-&gt;!p.getSecond().equals(highestVersion))<a name="line.1841"></a>
-<span class="sourceLineNo">1842</span>        .map(Pair::getFirst)<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span>        .collect(Collectors.toList());<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span>  }<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span><a name="line.1845"></a>
-<span class="sourceLineNo">1846</span>  // ============================================================================================<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span>  //  Server Helpers<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span>  // ============================================================================================<a name="line.1848"></a>
-<span class="sourceLineNo">1849</span>  @Override<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span>  public void serverAdded(final ServerName serverName) {<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span>  }<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span><a name="line.1852"></a>
-<span class="sourceLineNo">1853</span>  @Override<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span>  public void serverRemoved(final ServerName serverName) {<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span>    final ServerStateNode serverNode = regionStates.getServerNode(serverName);<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span>    if (serverNode == null) return;<a name="line.1856"></a>
-<span class="sourceLineNo">1857</span><a name="line.1857"></a>
-<span class="sourceLineNo">1858</span>    // just in case, wake procedures waiting for this server report<a name="line.1858"></a>
-<span class="sourceLineNo">1859</span>    wakeServerReportEvent(serverNode);<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span>  }<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span><a name="line.1861"></a>
-<span class="sourceLineNo">1862</span>  private void killRegionServer(final ServerStateNode serverNode) {<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span>    master.getServerManager().expireServer(serverNode.getServerName());<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span>  }<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span><a name="line.1865"></a>
-<span class="sourceLineNo">1866</span>  @VisibleForTesting<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span>  MasterServices getMaster() {<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span>    return master;<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span>  }<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span>}<a name="line.1870"></a>
+<span class="sourceLineNo">1213</span>    // Scan hbase:meta to build list of existing regions, servers, and assignment.<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span>    // hbase:meta is online now or will be. Inside loadMeta, we keep trying. Can't make progress<a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>    // w/o  meta.<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>    loadMeta();<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span><a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>    while (master.getServerManager().countOfRegionServers() &lt; 1) {<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>      LOG.info("Waiting for RegionServers to join; current count={}",<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>        master.getServerManager().countOfRegionServers());<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>      Threads.sleep(250);<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>    }<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>    LOG.info("Number of RegionServers={}", master.getServerManager().countOfRegionServers());<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span><a name="line.1224"></a>
+<span class="sourceLineNo">1225</span>    processOfflineRegions();<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span><a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>    // Start the RIT chore<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>    master.getMasterProcedureExecutor().addChore(this.ritChore);<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span><a name="line.1229"></a>
+<span class="sourceLineNo">1230</span>    long costMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime);<a name="line.1230"></a>
+<span class="sourceLineNo">1231</span>    LOG.info("Joined the cluster in {}", StringUtils.humanTimeDiff(costMs));<a name="line.1231"></a>
+<span class="sourceLineNo">1232</span>  }<a name="line.1232"></a>
+<span class="sourceLineNo">1233</span><a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>  // Create assign procedure for offline regions.<a name="line.1234"></a>
+<span class="sourceLineNo">1235</span>  // Just follow the old processofflineServersWithOnlineRegions method. Since now we do not need to<a name="line.1235"></a>
+<span class="sourceLineNo">1236</span>  // deal with dead server any more, we only deal with the regions in OFFLINE state in this method.<a name="line.1236"></a>
+<span class="sourceLineNo">1237</span>  // And this is a bit strange, that for new regions, we will add it in CLOSED state instead of<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>  // OFFLINE state, and usually there will be a procedure to track them. The<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>  // processofflineServersWithOnlineRegions is a legacy from long ago, as things are going really<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>  // different now, maybe we do not need this method any more. Need to revisit later.<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>  private void processOfflineRegions() {<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>    List&lt;RegionInfo&gt; offlineRegions = regionStates.getRegionStates().stream()<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>      .filter(RegionState::isOffline).filter(s -&gt; isTableEnabled(s.getRegion().getTable()))<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span>      .map(RegionState::getRegion).collect(Collectors.toList());<a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>    if (!offlineRegions.isEmpty()) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>      master.getMasterProcedureExecutor().submitProcedures(<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>        master.getAssignmentManager().createRoundRobinAssignProcedures(offlineRegions));<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>    }<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>  }<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span><a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>  private void loadMeta() throws IOException {<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>    // TODO: use a thread pool<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span>    regionStateStore.visitMeta(new RegionStateStore.RegionStateVisitor() {<a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>      @Override<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>      public void visitRegionState(Result result, final RegionInfo regionInfo, final State state,<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span>          final ServerName regionLocation, final ServerName lastHost, final long openSeqNum) {<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span>        if (state == null &amp;&amp; regionLocation == null &amp;&amp; lastHost == null &amp;&amp;<a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>            openSeqNum == SequenceId.NO_SEQUENCE_ID) {<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>          // This is a row with nothing in it.<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>          LOG.warn("Skipping empty row={}", result);<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>          return;<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>        }<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>        State localState = state;<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>        if (localState == null) {<a name="line.1264"></a>
+<span class="sourceLineNo">1265</span>          // No region state column data in hbase:meta table! Are I doing a rolling upgrade from<a name="line.1265"></a>
+<span class="sourceLineNo">1266</span>          // hbase1 to hbase2? Am I restoring a SNAPSHOT or otherwise adding a region to hbase:meta?<a name="line.1266"></a>
+<span class="sourceLineNo">1267</span>          // In any of these cases, state is empty. For now, presume OFFLINE but there are probably<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>          // cases where we need to probe more to be sure this correct; TODO informed by experience.<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>          LOG.info(regionInfo.getEncodedName() + " regionState=null; presuming " + State.OFFLINE);<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span><a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>          localState = State.OFFLINE;<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>        }<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>        RegionStateNode regionNode = regionStates.getOrCreateRegionStateNode(regionInfo);<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>        // Do not need to lock on regionNode, as we can make sure that before we finish loading<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>        // meta, all the related procedures can not be executed. The only exception is formeta<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span>        // region related operations, but here we do not load the informations for meta region.<a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>        regionNode.setState(localState);<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>        regionNode.setLastHost(lastHost);<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>        regionNode.setRegionLocation(regionLocation);<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>        regionNode.setOpenSeqNum(openSeqNum);<a name="line.1280"></a>
+<span class="sourceLineNo">1281</span><a name="line.1281"></a>
+<span class="sourceLineNo">1282</span>        if (localState == State.OPEN) {<a name="line.1282"></a>
+<span class="sourceLineNo">1283</span>          assert regionLocation != null : "found null region location for " + regionNode;<a name="line.1283"></a>
+<span class="sourceLineNo">1284</span>          regionStates.addRegionToServer(regionNode);<a name="line.1284"></a>
+<span class="sourceLineNo">1285</span>        } else if (localState == State.OFFLINE || regionInfo.isOffline()) {<a name="line.1285"></a>
+<span class="sourceLineNo">1286</span>          regionStates.addToOfflineRegions(regionNode);<a name="line.1286"></a>
+<span class="sourceLineNo">1287</span>        }<a name="line.1287"></a>
+<span class="sourceLineNo">1288</span>      }<a name="line.1288"></a>
+<span class="sourceLineNo">1289</span>    });<a name="line.1289"></a>
+<span class="sourceLineNo">1290</span><a name="line.1290"></a>
+<span class="sourceLineNo">1291</span>    // every assignment is blocked until meta is loaded.<a name="line.1291"></a>
+<span class="sourceLineNo">1292</span>    wakeMetaLoadedEvent();<a name="line.1292"></a>
+<span class="sourceLineNo">1293</span>  }<a name="line.1293"></a>
+<span class="sourceLineNo">1294</span><a name="line.1294"></a>
+<span class="sourceLineNo">1295</span>  /**<a name="line.1295"></a>
+<span class="sourceLineNo">1296</span>   * Used to check if the meta loading is done.<a name="line.1296"></a>
+<span class="sourceLineNo">1297</span>   * &lt;p/&gt;<a name="line.1297"></a>
+<span class="sourceLineNo">1298</span>   * if not we throw PleaseHoldException since we are rebuilding the RegionStates<a name="line.1298"></a>
+<span class="sourceLineNo">1299</span>   * @param hri region to check if it is already rebuild<a name="line.1299"></a>
+<span class="sourceLineNo">1300</span>   * @throws PleaseHoldException if meta has not been loaded yet<a name="line.1300"></a>
+<span class="sourceLineNo">1301</span>   */<a name="line.1301"></a>
+<span class="sourceLineNo">1302</span>  private void checkMetaLoaded(RegionInfo hri) throws PleaseHoldException {<a name="line.1302"></a>
+<span class="sourceLineNo">1303</span>    if (!isRunning()) {<a name="line.1303"></a>
+<span class="sourceLineNo">1304</span>      throw new PleaseHoldException("AssignmentManager not running");<a name="line.1304"></a>
+<span class="sourceLineNo">1305</span>    }<a name="line.1305"></a>
+<span class="sourceLineNo">1306</span>    boolean meta = isMetaRegion(hri);<a name="line.1306"></a>
+<span class="sourceLineNo">1307</span>    boolean metaLoaded = isMetaLoaded();<a name="line.1307"></a>
+<span class="sourceLineNo">1308</span>    if (!meta &amp;&amp; !metaLoaded) {<a name="line.1308"></a>
+<span class="sourceLineNo">1309</span>      throw new PleaseHoldException(<a name="line.1309"></a>
+<span class="sourceLineNo">1310</span>        "Master not fully online; hbase:meta=" + meta + ", metaLoaded=" + metaLoaded);<a name="line.1310"></a>
+<span class="sourceLineNo">1311</span>    }<a name="line.1311"></a>
+<span class="sourceLineNo">1312</span>  }<a name="line.1312"></a>
+<span class="sourceLineNo">1313</span><a name="line.1313"></a>
+<span class="sourceLineNo">1314</span>  // ============================================================================================<a name="line.1314"></a>
+<span class="sourceLineNo">1315</span>  //  TODO: Metrics<a name="line.1315"></a>
+<span class="sourceLineNo">1316</span>  // ============================================================================================<a name="line.1316"></a>
+<span class="sourceLineNo">1317</span>  public int getNumRegionsOpened() {<a name="line.1317"></a>
+<span class="sourceLineNo">1318</span>    // TODO: Used by TestRegionPlacement.java and assume monotonically increasing value<a name="line.1318"></a>
+<span class="sourceLineNo">1319</span>    return 0;<a name="line.1319"></a>
+<span class="sourceLineNo">1320</span>  }<a name="line.1320"></a>
+<span class="sourceLineNo">1321</span><a name="line.1321"></a>
+<span class="sourceLineNo">1322</span>  public void submitServerCrash(final ServerName serverName, final boolean shouldSplitWal) {<a name="line.1322"></a>
+<span class="sourceLineNo">1323</span>    boolean carryingMeta = isCarryingMeta(serverName);<a name="line.1323"></a>
+<span class="sourceLineNo">1324</span>    ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec = this.master.getMasterProcedureExecutor();<a name="line.1324"></a>
+<span class="sourceLineNo">1325</span>    procExec.submitProcedure(new ServerCrashProcedure(procExec.getEnvironment(), serverName,<a name="line.1325"></a>
+<span class="sourceLineNo">1326</span>      shouldSplitWal, carryingMeta));<a name="line.1326"></a>
+<span class="sourceLineNo">1327</span>    LOG.debug("Added=" + serverName +<a name="line.1327"></a>
+<span class="sourceLineNo">1328</span>      " to dead servers, submitted shutdown handler to be executed meta=" + carryingMeta);<a name="line.1328"></a>
+<span class="sourceLineNo">1329</span>  }<a name="line.1329"></a>
+<span class="sourceLineNo">1330</span><a name="line.1330"></a>
+<span class="sourceLineNo">1331</span>  public void offlineRegion(final RegionInfo regionInfo) {<a name="line.1331"></a>
+<span class="sourceLineNo">1332</span>    // TODO used by MasterRpcServices<a name="line.1332"></a>
+<span class="sourceLineNo">1333</span>    RegionStateNode node = regionStates.getRegionStateNode(regionInfo);<a name="line.1333"></a>
+<span class="sourceLineNo">1334</span>    if (node != null) {<a name="line.1334"></a>
+<span class="sourceLineNo">1335</span>      node.offline();<a name="line.1335"></a>
+<span class="sourceLineNo">1336</span>    }<a name="line.1336"></a>
+<span class="sourceLineNo">1337</span>  }<a name="line.1337"></a>
+<span class="sourceLineNo">1338</span><a name="line.1338"></a>
+<span class="sourceLineNo">1339</span>  public void onlineRegion(final RegionInfo regionInfo, final ServerName serverName) {<a name="line.1339"></a>
+<span class="sourceLineNo">1340</span>    // TODO used by TestSplitTransactionOnCluster.java<a name="line.1340"></a>
+<span class="sourceLineNo">1341</span>  }<a name="line.1341"></a>
+<span class="sourceLineNo">1342</span><a name="line.1342"></a>
+<span class="sourceLineNo">1343</span>  public Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; getSnapShotOfAssignment(<a name="line.1343"></a>
+<span class="sourceLineNo">1344</span>      final Collection&lt;RegionInfo&gt; regions) {<a name="line.1344"></a>
+<span class="sourceLineNo">1345</span>    return regionStates.getSnapShotOfAssignment(regions);<a name="line.1345"></a>
+<span class="sourceLineNo">1346</span>  }<a name="line.1346"></a>
+<span class="sourceLineNo">1347</span><a name="line.1347"></a>
+<span class="sourceLineNo">1348</span>  // ============================================================================================<a name="line.1348"></a>
+<span class="sourceLineNo">1349</span>  //  TODO: UTILS/HELPERS?<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span>  // ============================================================================================<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span>  /**<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span>   * Used by the client (via master) to identify if all regions have the schema updates<a name="line.1352"></a>
+<span class="sourceLineNo">1353</span>   *<a name="line.1353"></a>
+<span class="sourceLineNo">1354</span>   * @param tableName<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span>   * @return Pair indicating the status of the alter command (pending/total)<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span>   * @throws IOException<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span>   */<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span>  public Pair&lt;Integer, Integer&gt; getReopenStatus(TableName tableName) {<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span>    if (isTableDisabled(tableName)) return new Pair&lt;Integer, Integer&gt;(0, 0);<a name="line.1359"></a>
+<span class="sourceLineNo">1360</span><a name="line.1360"></a>
+<span class="sourceLineNo">1361</span>    final List&lt;RegionState&gt; states = regionStates.getTableRegionStates(tableName);<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span>    int ritCount = 0;<a name="line.1362"></a>
+<span class="sourceLineNo">1363</span>    for (RegionState regionState: states) {<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span>      if (!regionState.isOpened()) ritCount++;<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span>    }<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span>    return new Pair&lt;Integer, Integer&gt;(ritCount, states.size());<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span>  }<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span><a name="line.1368"></a>
+<span class="sourceLineNo">1369</span>  // ============================================================================================<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span>  //  TODO: Region State In Transition<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span>  // ============================================================================================<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span>  public boolean hasRegionsInTransition() {<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span>    return regionStates.hasRegionsInTransition();<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span>  }<a name="line.1374"></a>
+<span class="sourceLineNo">1375</span><a name="line.1375"></a>
+<span class="sourceLineNo">1376</span>  public List&lt;RegionStateNode&gt; getRegionsInTransition() {<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span>    return regionStates.getRegionsInTransition();<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span>  }<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span><a name="line.1379"></a>
+<span class="sourceLineNo">1380</span>  public List&lt;RegionInfo&gt; getAssignedRegions() {<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span>    return regionStates.getAssignedRegions();<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span>  }<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span><a name="line.1383"></a>
+<span class="sourceLineNo">1384</span>  public RegionInfo getRegionInfo(final byte[] regionName) {<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span>    final RegionStateNode regionState = regionStates.getRegionStateNodeFromName(regionName);<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span>    return regionState != null ? regionState.getRegionInfo() : null;<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span>  }<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span><a name="line.1388"></a>
+<span class="sourceLineNo">1389</span>  // ============================================================================================<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span>  //  Expected states on region state transition.<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span>  //  Notice that there is expected states for transiting to OPENING state, this is because SCP.<a name="line.1391"></a>
+<span class="sourceLineNo">1392</

<TRUNCATED>

[12/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html
new file mode 100644
index 0000000..b570921
--- /dev/null
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html
@@ -0,0 +1,740 @@
+<!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.regionserver;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.BLOOM_FILTER_TYPE_KEY;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.DELETE_FAMILY_COUNT;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.regionserver.HStoreFile.LAST_BLOOM_KEY;<a name="line.22"></a>
+<span class="sourceLineNo">023</span><a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.io.DataInput;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.IOException;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.Map;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.Optional;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.SortedSet;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.conf.Configuration;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.fs.FileSystem;<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.Cell;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HConstants;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.PrivateCellUtil;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.io.FSDataInputStreamWrapper;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.io.hfile.BlockType;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.io.hfile.HFileBlock;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.io.hfile.HFileScanner;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.nio.ByteBuff;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.BloomFilter;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.slf4j.Logger;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.slf4j.LoggerFactory;<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> * Reader for a StoreFile.<a name="line.59"></a>
+<span class="sourceLineNo">060</span> */<a name="line.60"></a>
+<span class="sourceLineNo">061</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.PHOENIX)<a name="line.61"></a>
+<span class="sourceLineNo">062</span>@InterfaceStability.Evolving<a name="line.62"></a>
+<span class="sourceLineNo">063</span>public class StoreFileReader {<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private static final Logger LOG = LoggerFactory.getLogger(StoreFileReader.class.getName());<a name="line.64"></a>
+<span class="sourceLineNo">065</span><a name="line.65"></a>
+<span class="sourceLineNo">066</span>  protected BloomFilter generalBloomFilter = null;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  protected BloomFilter deleteFamilyBloomFilter = null;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  protected BloomType bloomFilterType;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private final HFile.Reader reader;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  protected long sequenceID = -1;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  protected TimeRange timeRange = null;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private byte[] lastBloomKey;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private long deleteFamilyCnt = -1;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private boolean bulkLoadResult = false;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private KeyValue.KeyOnlyKeyValue lastBloomKeyOnlyKV = null;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private boolean skipResetSeqId = true;<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>  // Counter that is incremented every time a scanner is created on the<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  // store file. It is decremented when the scan on the store file is<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  // done. All StoreFileReader for the same StoreFile will share this counter.<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private final AtomicInteger refCount;<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>  // indicate that whether this StoreFileReader is shared, i.e., used for pread. If not, we will<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  // close the internal reader when readCompleted is called.<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  @VisibleForTesting<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  final boolean shared;<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private volatile Listener listener;<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  private boolean closed = false;<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private StoreFileReader(HFile.Reader reader, AtomicInteger refCount, boolean shared) {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    this.reader = reader;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    bloomFilterType = BloomType.NONE;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    this.refCount = refCount;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    this.shared = shared;<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>  public StoreFileReader(FileSystem fs, Path path, CacheConfig cacheConf,<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      boolean primaryReplicaStoreFile, AtomicInteger refCount, boolean shared, Configuration conf)<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      throws IOException {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    this(HFile.createReader(fs, path, cacheConf, primaryReplicaStoreFile, conf), refCount, shared);<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>  public StoreFileReader(FileSystem fs, Path path, FSDataInputStreamWrapper in, long size,<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      CacheConfig cacheConf, boolean primaryReplicaStoreFile, AtomicInteger refCount,<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      boolean shared, Configuration conf) throws IOException {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    this(HFile.createReader(fs, path, in, size, cacheConf, primaryReplicaStoreFile, conf), refCount,<a name="line.108"></a>
+<span class="sourceLineNo">109</span>        shared);<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>  void copyFields(StoreFileReader reader) {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    this.generalBloomFilter = reader.generalBloomFilter;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    this.deleteFamilyBloomFilter = reader.deleteFamilyBloomFilter;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    this.bloomFilterType = reader.bloomFilterType;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    this.sequenceID = reader.sequenceID;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    this.timeRange = reader.timeRange;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    this.lastBloomKey = reader.lastBloomKey;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    this.bulkLoadResult = reader.bulkLoadResult;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    this.lastBloomKeyOnlyKV = reader.lastBloomKeyOnlyKV;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    this.skipResetSeqId = reader.skipResetSeqId;<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>  public boolean isPrimaryReplicaReader() {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    return reader.isPrimaryReplicaReader();<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  }<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>   * ONLY USE DEFAULT CONSTRUCTOR FOR UNIT TESTS<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   */<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  @VisibleForTesting<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  StoreFileReader() {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    this.refCount = new AtomicInteger(0);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    this.reader = null;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    this.shared = false;<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>  public CellComparator getComparator() {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    return reader.getComparator();<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">143</span>   * Get a scanner to scan over this StoreFile.<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * @param cacheBlocks should this scanner cache blocks?<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * @param pread use pread (for highly concurrent small readers)<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   * @param isCompaction is scanner being used for compaction?<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * @param scannerOrder Order of this scanner relative to other scanners. See<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   *          {@link KeyValueScanner#getScannerOrder()}.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * @param canOptimizeForNonNullColumn {@code true} if we can make sure there is no null column,<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   *          otherwise {@code false}. This is a hint for optimization.<a name="line.150"></a>
+<span class="sourceLineNo">151</span>   * @return a scanner<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   */<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  public StoreFileScanner getStoreFileScanner(boolean cacheBlocks, boolean pread,<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      boolean isCompaction, long readPt, long scannerOrder, boolean canOptimizeForNonNullColumn) {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    return new StoreFileScanner(this, getScanner(cacheBlocks, pread, isCompaction),<a name="line.155"></a>
+<span class="sourceLineNo">156</span>        !isCompaction, reader.hasMVCCInfo(), readPt, scannerOrder, canOptimizeForNonNullColumn);<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>  /**<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   * Indicate that the scanner has started reading with this reader. We need to increment the ref<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   * count so reader is not close until some object is holding the lock<a name="line.161"></a>
+<span class="sourceLineNo">162</span>   */<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  void incrementRefCount() {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    refCount.incrementAndGet();<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>   * Indicate that the scanner has finished reading with this reader. We need to decrement the ref<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * count, and also, if this is not the common pread reader, we should close it.<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  void readCompleted() {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    refCount.decrementAndGet();<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    if (!shared) {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      try {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        reader.close(false);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      } catch (IOException e) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        LOG.warn("failed to close stream reader", e);<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>  }<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>   * @deprecated Do not write further code which depends on this call. Instead<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   *   use getStoreFileScanner() which uses the StoreFileScanner class/interface<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   *   which is the preferred way to scan a store with higher level concepts.<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   *<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * @param cacheBlocks should we cache the blocks?<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   * @param pread use pread (for concurrent small readers)<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   * @return the underlying HFileScanner<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   */<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  @Deprecated<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  public HFileScanner getScanner(boolean cacheBlocks, boolean pread) {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    return getScanner(cacheBlocks, pread, false);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  }<a name="line.194"></a>
+<span class="sourceLineNo">195</span><a name="line.195"></a>
+<span class="sourceLineNo">196</span>  /**<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * @deprecated Do not write further code which depends on this call. Instead<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   *   use getStoreFileScanner() which uses the StoreFileScanner class/interface<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   *   which is the preferred way to scan a store with higher level concepts.<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   *<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   * @param cacheBlocks<a name="line.201"></a>
+<span class="sourceLineNo">202</span>   *          should we cache the blocks?<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   * @param pread<a name="line.203"></a>
+<span class="sourceLineNo">204</span>   *          use pread (for concurrent small readers)<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   * @param isCompaction<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   *          is scanner being used for compaction?<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * @return the underlying HFileScanner<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   */<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  @Deprecated<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  public HFileScanner getScanner(boolean cacheBlocks, boolean pread,<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      boolean isCompaction) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    return reader.getScanner(cacheBlocks, pread, isCompaction);<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>  public void close(boolean evictOnClose) throws IOException {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    synchronized (this) {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      if (closed) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        return;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      reader.close(evictOnClose);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      closed = true;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    if (listener != null) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      listener.storeFileReaderClosed(this);<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>
+<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>   * Check if this storeFile may contain keys within the TimeRange that<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * have not expired (i.e. not older than oldestUnexpiredTS).<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * @param timeRange the timeRange to restrict<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   * @param oldestUnexpiredTS the oldest timestamp that is not expired, as<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   *          determined by the column family's TTL<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * @return false if queried keys definitely don't exist in this StoreFile<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   */<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  boolean passesTimerangeFilter(TimeRange tr, long oldestUnexpiredTS) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    return this.timeRange == null? true:<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      this.timeRange.includesTimeRange(tr) &amp;&amp; this.timeRange.getMax() &gt;= oldestUnexpiredTS;<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>  /**<a name="line.241"></a>
+<span class="sourceLineNo">242</span>   * Checks whether the given scan passes the Bloom filter (if present). Only<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * checks Bloom filters for single-row or single-row-column scans. Bloom<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * filter checking for multi-gets is implemented as part of the store<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * scanner system (see {@link StoreFileScanner#seek(Cell)} and uses<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   * the lower-level API {@link #passesGeneralRowBloomFilter(byte[], int, int)}<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   * and {@link #passesGeneralRowColBloomFilter(Cell)}.<a name="line.247"></a>
+<span class="sourceLineNo">248</span>   *<a name="line.248"></a>
+<span class="sourceLineNo">249</span>   * @param scan the scan specification. Used to determine the row, and to<a name="line.249"></a>
+<span class="sourceLineNo">250</span>   *          check whether this is a single-row ("get") scan.<a name="line.250"></a>
+<span class="sourceLineNo">251</span>   * @param columns the set of columns. Only used for row-column Bloom<a name="line.251"></a>
+<span class="sourceLineNo">252</span>   *          filters.<a name="line.252"></a>
+<span class="sourceLineNo">253</span>   * @return true if the scan with the given column set passes the Bloom<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   *         filter, or if the Bloom filter is not applicable for the scan.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   *         False if the Bloom filter is applicable and the scan fails it.<a name="line.255"></a>
+<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
+<span class="sourceLineNo">257</span>  boolean passesBloomFilter(Scan scan, final SortedSet&lt;byte[]&gt; columns) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    // Multi-column non-get scans will use Bloom filters through the<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    // lower-level API function that this function calls.<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    if (!scan.isGetScan()) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      return true;<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>    byte[] row = scan.getStartRow();<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    switch (this.bloomFilterType) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      case ROW:<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        return passesGeneralRowBloomFilter(row, 0, row.length);<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>      case ROWCOL:<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        if (columns != null &amp;&amp; columns.size() == 1) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>          byte[] column = columns.first();<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          // create the required fake key<a name="line.272"></a>
+<span class="sourceLineNo">273</span>          Cell kvKey = PrivateCellUtil.createFirstOnRow(row, HConstants.EMPTY_BYTE_ARRAY, column);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>          return passesGeneralRowColBloomFilter(kvKey);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>        // For multi-column queries the Bloom filter is checked from the<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        // seekExact operation.<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        return true;<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>      default:<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        return true;<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><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  public boolean passesDeleteFamilyBloomFilter(byte[] row, int rowOffset,<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      int rowLen) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    // Cache Bloom filter as a local variable in case it is set to null by<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    // another thread on an IO error.<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    BloomFilter bloomFilter = this.deleteFamilyBloomFilter;<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>    // Empty file or there is no delete family at all<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    if (reader.getTrailer().getEntryCount() == 0 || deleteFamilyCnt == 0) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      return false;<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    }<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>    if (bloomFilter == null) {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      return true;<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>    try {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      if (!bloomFilter.supportsAutoLoading()) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        return true;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      }<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      return bloomFilter.contains(row, rowOffset, rowLen, null);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    } catch (IllegalArgumentException e) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      LOG.error("Bad Delete Family bloom filter data -- proceeding without",<a name="line.307"></a>
+<span class="sourceLineNo">308</span>          e);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      setDeleteFamilyBloomFilterFaulty();<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>    return true;<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>   * A method for checking Bloom filters. Called directly from<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * StoreFileScanner in case of a multi-column query.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   *<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @return True if passes<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public boolean passesGeneralRowBloomFilter(byte[] row, int rowOffset, int rowLen) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    BloomFilter bloomFilter = this.generalBloomFilter;<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    if (bloomFilter == null) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      return true;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>    // Used in ROW bloom<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    byte[] key = null;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    if (rowOffset != 0 || rowLen != row.length) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      throw new AssertionError(<a name="line.330"></a>
+<span class="sourceLineNo">331</span>          "For row-only Bloom filters the row " + "must occupy the whole array");<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    }<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    key = row;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    return checkGeneralBloomFilter(key, null, bloomFilter);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  }<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>  /**<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * A method for checking Bloom filters. Called directly from<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * StoreFileScanner in case of a multi-column query.<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   *<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * @param cell<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   *          the cell to check if present in BloomFilter<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   * @return True if passes<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   */<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  public boolean passesGeneralRowColBloomFilter(Cell cell) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    BloomFilter bloomFilter = this.generalBloomFilter;<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    if (bloomFilter == null) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      return true;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    // Used in ROW_COL bloom<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    Cell kvKey = null;<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    // Already if the incoming key is a fake rowcol key then use it as it is<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    if (cell.getTypeByte() == KeyValue.Type.Maximum.getCode() &amp;&amp; cell.getFamilyLength() == 0) {<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      kvKey = cell;<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    } else {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      kvKey = PrivateCellUtil.createFirstOnRowCol(cell);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    }<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    return checkGeneralBloomFilter(null, kvKey, bloomFilter);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  }<a name="line.359"></a>
+<span class="sourceLineNo">360</span><a name="line.360"></a>
+<span class="sourceLineNo">361</span>  private boolean checkGeneralBloomFilter(byte[] key, Cell kvKey, BloomFilter bloomFilter) {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    // Empty file<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    if (reader.getTrailer().getEntryCount() == 0) {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      return false;<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    }<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    HFileBlock bloomBlock = null;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    try {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      boolean shouldCheckBloom;<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      ByteBuff bloom;<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      if (bloomFilter.supportsAutoLoading()) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        bloom = null;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        shouldCheckBloom = true;<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      } else {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        bloomBlock = reader.getMetaBlock(HFile.BLOOM_FILTER_DATA_KEY, true);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>        bloom = bloomBlock.getBufferWithoutHeader();<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        shouldCheckBloom = bloom != null;<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      }<a name="line.377"></a>
+<span class="sourceLineNo">378</span><a name="line.378"></a>
+<span class="sourceLineNo">379</span>      if (shouldCheckBloom) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        boolean exists;<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>        // Whether the primary Bloom key is greater than the last Bloom key<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        // from the file info. For row-column Bloom filters this is not yet<a name="line.383"></a>
+<span class="sourceLineNo">384</span>        // a sufficient condition to return false.<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        boolean keyIsAfterLast = (lastBloomKey != null);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        // hbase:meta does not have blooms. So we need not have special interpretation<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        // of the hbase:meta cells.  We can safely use Bytes.BYTES_RAWCOMPARATOR for ROW Bloom<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        if (keyIsAfterLast) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          if (bloomFilterType == BloomType.ROW) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>            keyIsAfterLast = (Bytes.BYTES_RAWCOMPARATOR.compare(key, lastBloomKey) &gt; 0);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>          } else {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>            keyIsAfterLast = (CellComparator.getInstance().compare(kvKey, lastBloomKeyOnlyKV)) &gt; 0;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>          }<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        }<a name="line.394"></a>
+<span class="sourceLineNo">395</span><a name="line.395"></a>
+<span class="sourceLineNo">396</span>        if (bloomFilterType == BloomType.ROWCOL) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>          // Since a Row Delete is essentially a DeleteFamily applied to all<a name="line.397"></a>
+<span class="sourceLineNo">398</span>          // columns, a file might be skipped if using row+col Bloom filter.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>          // In order to ensure this file is included an additional check is<a name="line.399"></a>
+<span class="sourceLineNo">400</span>          // required looking only for a row bloom.<a name="line.400"></a>
+<span class="sourceLineNo">401</span>          Cell rowBloomKey = PrivateCellUtil.createFirstOnRow(kvKey);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>          // hbase:meta does not have blooms. So we need not have special interpretation<a name="line.402"></a>
+<span class="sourceLineNo">403</span>          // of the hbase:meta cells.  We can safely use Bytes.BYTES_RAWCOMPARATOR for ROW Bloom<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          if (keyIsAfterLast<a name="line.404"></a>
+<span class="sourceLineNo">405</span>              &amp;&amp; (CellComparator.getInstance().compare(rowBloomKey, lastBloomKeyOnlyKV)) &gt; 0) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>            exists = false;<a name="line.406"></a>
+<span class="sourceLineNo">407</span>          } else {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>            exists =<a name="line.408"></a>
+<span class="sourceLineNo">409</span>                bloomFilter.contains(kvKey, bloom, BloomType.ROWCOL) ||<a name="line.409"></a>
+<span class="sourceLineNo">410</span>                bloomFilter.contains(rowBloomKey, bloom, BloomType.ROWCOL);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>          }<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        } else {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>          exists = !keyIsAfterLast<a name="line.413"></a>
+<span class="sourceLineNo">414</span>              &amp;&amp; bloomFilter.contains(key, 0, key.length, bloom);<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>        return exists;<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      }<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    } catch (IOException e) {<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      LOG.error("Error reading bloom filter data -- proceeding without",<a name="line.420"></a>
+<span class="sourceLineNo">421</span>          e);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      setGeneralBloomFilterFaulty();<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    } catch (IllegalArgumentException e) {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      LOG.error("Bad bloom filter data -- proceeding without", e);<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      setGeneralBloomFilterFaulty();<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    } finally {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      // Return the bloom block so that its ref count can be decremented.<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      reader.returnBlock(bloomBlock);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    }<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    return true;<a name="line.430"></a>
+<span class="sourceLineNo">431</span>  }<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">434</span>   * Checks whether the given scan rowkey range overlaps with the current storefile's<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * @param scan the scan specification. Used to determine the rowkey range.<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   * @return true if there is overlap, false otherwise<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   */<a name="line.437"></a>
+<span class="sourceLineNo">438</span>  public boolean passesKeyRangeFilter(Scan scan) {<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    Optional&lt;Cell&gt; firstKeyKV = this.getFirstKey();<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    Optional&lt;Cell&gt; lastKeyKV = this.getLastKey();<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    if (!firstKeyKV.isPresent() || !lastKeyKV.isPresent()) {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>      // the file is empty<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      return false;<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    }<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    if (Bytes.equals(scan.getStartRow(), HConstants.EMPTY_START_ROW) &amp;&amp;<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        Bytes.equals(scan.getStopRow(), HConstants.EMPTY_END_ROW)) {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      return true;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>    }<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    byte[] smallestScanRow = scan.isReversed() ? scan.getStopRow() : scan.getStartRow();<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    byte[] largestScanRow = scan.isReversed() ? scan.getStartRow() : scan.getStopRow();<a name="line.450"></a>
+<span class="sourceLineNo">451</span>    boolean nonOverLapping = (getComparator()<a name="line.451"></a>
+<span class="sourceLineNo">452</span>        .compareRows(firstKeyKV.get(), largestScanRow, 0, largestScanRow.length) &gt; 0 &amp;&amp;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        !Bytes.equals(scan.isReversed() ? scan.getStartRow() : scan.getStopRow(),<a name="line.453"></a>
+<span class="sourceLineNo">454</span>          HConstants.EMPTY_END_ROW)) ||<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        getComparator().compareRows(lastKeyKV.get(), smallestScanRow, 0,<a name="line.455"></a>
+<span class="sourceLineNo">456</span>          smallestScanRow.length) &lt; 0;<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    return !nonOverLapping;<a name="line.457"></a>
+<span class="sourceLineNo">458</span>  }<a name="line.458"></a>
+<span class="sourceLineNo">459</span><a name="line.459"></a>
+<span class="sourceLineNo">460</span>  public Map&lt;byte[], byte[]&gt; loadFileInfo() throws IOException {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    Map&lt;byte [], byte []&gt; fi = reader.loadFileInfo();<a name="line.461"></a>
+<span class="sourceLineNo">462</span><a name="line.462"></a>
+<span class="sourceLineNo">463</span>    byte[] b = fi.get(BLOOM_FILTER_TYPE_KEY);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    if (b != null) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      bloomFilterType = BloomType.valueOf(Bytes.toString(b));<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    }<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>    lastBloomKey = fi.get(LAST_BLOOM_KEY);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    if(bloomFilterType == BloomType.ROWCOL) {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      lastBloomKeyOnlyKV = new KeyValue.KeyOnlyKeyValue(lastBloomKey, 0, lastBloomKey.length);<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    byte[] cnt = fi.get(DELETE_FAMILY_COUNT);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    if (cnt != null) {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      deleteFamilyCnt = Bytes.toLong(cnt);<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    }<a name="line.475"></a>
+<span class="sourceLineNo">476</span><a name="line.476"></a>
+<span class="sourceLineNo">477</span>    return fi;<a name="line.477"></a>
+<span class="sourceLineNo">478</span>  }<a name="line.478"></a>
+<span class="sourceLineNo">479</span><a name="line.479"></a>
+<span class="sourceLineNo">480</span>  public void loadBloomfilter() {<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    this.loadBloomfilter(BlockType.GENERAL_BLOOM_META);<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    this.loadBloomfilter(BlockType.DELETE_FAMILY_BLOOM_META);<a name="line.482"></a>
+<span class="sourceLineNo">483</span>  }<a name="line.483"></a>
+<span class="sourceLineNo">484</span><a name="line.484"></a>
+<span class="sourceLineNo">485</span>  public void loadBloomfilter(BlockType blockType) {<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    try {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      if (blockType == BlockType.GENERAL_BLOOM_META) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>        if (this.generalBloomFilter != null)<a name="line.488"></a>
+<span class="sourceLineNo">489</span>          return; // Bloom has been loaded<a name="line.489"></a>
+<span class="sourceLineNo">490</span><a name="line.490"></a>
+<span class="sourceLineNo">491</span>        DataInput bloomMeta = reader.getGeneralBloomFilterMetadata();<a name="line.491"></a>
+<span class="sourceLineNo">492</span>        if (bloomMeta != null) {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>          // sanity check for NONE Bloom filter<a name="line.493"></a>
+<span class="sourceLineNo">494</span>          if (bloomFilterType == BloomType.NONE) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>            throw new IOException(<a name="line.495"></a>
+<span class="sourceLineNo">496</span>                "valid bloom filter type not found in FileInfo");<a name="line.496"></a>
+<span class="sourceLineNo">497</span>          } else {<a name="line.497"></a>
+<span class="sourceLineNo">498</span>            generalBloomFilter = BloomFilterFactory.createFromMeta(bloomMeta,<a name="line.498"></a>
+<span class="sourceLineNo">499</span>                reader);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>            if (LOG.isTraceEnabled()) {<a name="line.500"></a>
+<span class="sourceLineNo">501</span>              LOG.trace("Loaded " + bloomFilterType.toString() + " "<a name="line.501"></a>
+<span class="sourceLineNo">502</span>                + generalBloomFilter.getClass().getSimpleName()<a name="line.502"></a>
+<span class="sourceLineNo">503</span>                + " metadata for " + reader.getName());<a name="line.503"></a>
+<span class="sourceLineNo">504</span>            }<a name="line.504"></a>
+<span class="sourceLineNo">505</span>          }<a name="line.505"></a>
+<span class="sourceLineNo">506</span>        }<a name="line.506"></a>
+<span class="sourceLineNo">507</span>      } else if (blockType == BlockType.DELETE_FAMILY_BLOOM_META) {<a name="line.507"></a>
+<span class="sourceLineNo">508</span>        if (this.deleteFamilyBloomFilter != null)<a name="line.508"></a>
+<span class="sourceLineNo">509</span>          return; // Bloom has been loaded<a name="line.509"></a>
+<span class="sourceLineNo">510</span><a name="line.510"></a>
+<span class="sourceLineNo">511</span>        DataInput bloomMeta = reader.getDeleteBloomFilterMetadata();<a name="line.511"></a>
+<span class="sourceLineNo">512</span>        if (bloomMeta != null) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>          deleteFamilyBloomFilter = BloomFilterFactory.createFromMeta(<a name="line.513"></a>
+<span class="sourceLineNo">514</span>              bloomMeta, reader);<a name="line.514"></a>
+<span class="sourceLineNo">515</span>          LOG.info("Loaded Delete Family Bloom ("<a name="line.515"></a>
+<span class="sourceLineNo">516</span>              + deleteFamilyBloomFilter.getClass().getSimpleName()<a name="line.516"></a>
+<span class="sourceLineNo">517</span>              + ") metadata for " + reader.getName());<a name="line.517"></a>
+<span class="sourceLineNo">518</span>        }<a name="line.518"></a>
+<span class="sourceLineNo">519</span>      } else {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>        throw new RuntimeException("Block Type: " + blockType.toString()<a name="line.520"></a>
+<span class="sourceLineNo">521</span>            + "is not supported for Bloom filter");<a name="line.521"></a>
+<span class="sourceLineNo">522</span>      }<a name="line.522"></a>
+<span class="sourceLineNo">523</span>    } catch (IOException e) {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>      LOG.error("Error reading bloom filter meta for " + blockType<a name="line.524"></a>
+<span class="sourceLineNo">525</span>          + " -- proceeding without", e);<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      setBloomFilterFaulty(blockType);<a name="line.526"></a>
+<span class="sourceLineNo">527</span>    } catch (IllegalArgumentException e) {<a name="line.527"></a>
+<span class="sourceLineNo">528</span>      LOG.error("Bad bloom filter meta " + blockType<a name="line.528"></a>
+<span class="sourceLineNo">529</span>          + " -- proceeding without", e);<a name="line.529"></a>
+<span class="sourceLineNo">530</span>      setBloomFilterFaulty(blockType);<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    }<a name="line.531"></a>
+<span class="sourceLineNo">532</span>  }<a name="line.532"></a>
+<span class="sourceLineNo">533</span><a name="line.533"></a>
+<span class="sourceLineNo">534</span>  private void setBloomFilterFaulty(BlockType blockType) {<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    if (blockType == BlockType.GENERAL_BLOOM_META) {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      setGeneralBloomFilterFaulty();<a name="line.536"></a>
+<span class="sourceLineNo">537</span>    } else if (blockType == BlockType.DELETE_FAMILY_BLOOM_META) {<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      setDeleteFamilyBloomFilterFaulty();<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    }<a name="line.539"></a>
+<span class="sourceLineNo">540</span>  }<a name="line.540"></a>
+<span class="sourceLineNo">541</span><a name="line.541"></a>
+<span class="sourceLineNo">542</span>  /**<a name="line.542"></a>
+<span class="sourceLineNo">543</span>   * The number of Bloom filter entries in this store file, or an estimate<a name="line.543"></a>
+<span class="sourceLineNo">544</span>   * thereof, if the Bloom filter is not loaded. This always returns an upper<a name="line.544"></a>
+<span class="sourceLineNo">545</span>   * bound of the number of Bloom filter entries.<a name="line.545"></a>
+<span class="sourceLineNo">546</span>   *<a name="line.546"></a>
+<span class="sourceLineNo">547</span>   * @return an estimate of the number of Bloom filter entries in this file<a name="line.547"></a>
+<span class="sourceLineNo">548</span>   */<a name="line.548"></a>
+<span class="sourceLineNo">549</span>  public long getFilterEntries() {<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    return generalBloomFilter != null ? generalBloomFilter.getKeyCount()<a name="line.550"></a>
+<span class="sourceLineNo">551</span>        : reader.getEntries();<a name="line.551"></a>
+<span class="sourceLineNo">552</span>  }<a name="line.552"></a>
+<span class="sourceLineNo">553</span><a name="line.553"></a>
+<span class="sourceLineNo">554</span>  public void setGeneralBloomFilterFaulty() {<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    generalBloomFilter = null;<a name="line.555"></a>
+<span class="sourceLineNo">556</span>  }<a name="line.556"></a>
+<span class="sourceLineNo">557</span><a name="line.557"></a>
+<span class="sourceLineNo">558</span>  public void setDeleteFamilyBloomFilterFaulty() {<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    this.deleteFamilyBloomFilter = null;<a name="line.559"></a>
+<span class="sourceLineNo">560</span>  }<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>  public Optional&lt;Cell&gt; getLastKey() {<a name="line.562"></a>
+<span class="sourceLineNo">563</span>    return reader.getLastKey();<a name="line.563"></a>
+<span class="sourceLineNo">564</span>  }<a name="line.564"></a>
+<span class="sourceLineNo">565</span><a name="line.565"></a>
+<span class="sourceLineNo">566</span>  public Optional&lt;byte[]&gt; getLastRowKey() {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>    return reader.getLastRowKey();<a name="line.567"></a>
+<span class="sourceLineNo">568</span>  }<a name="line.568"></a>
+<span class="sourceLineNo">569</span><a name="line.569"></a>
+<span class="sourceLineNo">570</span>  public Optional&lt;Cell&gt; midKey() throws IOException {<a name="line.570"></a>
+<span class="sourceLineNo">571</span>    return reader.midKey();<a name="line.571"></a>
+<span class="sourceLineNo">572</span>  }<a name="line.572"></a>
+<span class="sourceLineNo">573</span><a name="line.573"></a>
+<span class="sourceLineNo">574</span>  public long length() {<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    return reader.length();<a name="line.575"></a>
+<span class="sourceLineNo">576</span>  }<a name="line.576"></a>
+<span class="sourceLineNo">577</span><a name="line.577"></a>
+<span class="sourceLineNo">578</span>  public long getTotalUncompressedBytes() {<a name="line.578"></a>
+<span class="sourceLineNo">579</span>    return reader.getTrailer().getTotalUncompressedBytes();<a name="line.579"></a>
+<span class="sourceLineNo">580</span>  }<a name="line.580"></a>
+<span class="sourceLineNo">581</span><a name="line.581"></a>
+<span class="sourceLineNo">582</span>  public long getEntries() {<a name="line.582"></a>
+<span class="sourceLineNo">583</span>    return reader.getEntries();<a name="line.583"></a>
+<span class="sourceLineNo">584</span>  }<a name="line.584"></a>
+<span class="sourceLineNo">585</span><a name="line.585"></a>
+<span class="sourceLineNo">586</span>  public long getDeleteFamilyCnt() {<a name="line.586"></a>
+<span class="sourceLineNo">587</span>    return deleteFamilyCnt;<a name="line.587"></a>
+<span class="sourceLineNo">588</span>  }<a name="line.588"></a>
+<span class="sourceLineNo">589</span><a name="line.589"></a>
+<span class="sourceLineNo">590</span>  public Optional&lt;Cell&gt; getFirstKey() {<a name="line.590"></a>
+<span class="sourceLineNo">591</span>    return reader.getFirstKey();<a name="line.591"></a>
+<span class="sourceLineNo">592</span>  }<a name="line.592"></a>
+<span class="sourceLineNo">593</span><a name="line.593"></a>
+<span class="sourceLineNo">594</span>  public long indexSize() {<a name="line.594"></a>
+<span class="sourceLineNo">595</span>    return reader.indexSize();<a name="line.595"></a>
+<span class="sourceLineNo">596</span>  }<a name="line.596"></a>
+<span class="sourceLineNo">597</span><a name="line.597"></a>
+<span class="sourceLineNo">598</span>  public BloomType getBloomFilterType() {<a name="line.598"></a>
+<span class="sourceLineNo">599</span>    return this.bloomFilterType;<a name="line.599"></a>
+<span class="sourceLineNo">600</span>  }<a name="line.600"></a>
+<span class="sourceLineNo">601</span><a name="line.601"></a>
+<span class="sourceLineNo">602</span>  public long getSequenceID() {<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    return sequenceID;<a name="line.603"></a>
+<span class="sourceLineNo">604</span>  }<a name="line.604"></a>
+<span class="sourceLineNo">605</span><a name="line.605"></a>
+<span class="sourceLineNo">606</span>  public void setSequenceID(long sequenceID) {<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    this.sequenceID = sequenceID;<a name="line.607"></a>
+<span class="sourceLineNo">608</span>  }<a name="line.608"></a>
+<span class="sourceLineNo">609</span><a name="line.609"></a>
+<span class="sourceLineNo">610</span>  public void setBulkLoaded(boolean bulkLoadResult) {<a name="line.610"></a>
+<span class="sourceLineNo">611</span>    this.bulkLoadResult = bulkLoadResult;<a name="line.611"></a>
+<span class="sourceLineNo">612</span>  }<a name="line.612"></a>
+<span class="sourceLineNo">613</span><a name="line.613"></a>
+<span class="sourceLineNo">614</span>  public boolean isBulkLoaded() {<a name="line.614"></a>
+<span class="sourceLineNo">615</span>    return this.bulkLoadResult;<a name="line.615"></a>
+<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
+<span class="sourceLineNo">617</span><a name="line.617"></a>
+<span class="sourceLineNo">618</span>  BloomFilter getGeneralBloomFilter() {<a name="line.618"></a>
+<span class="sourceLineNo">619</span>    return generalBloomFilter;<a name="line.619"></a>
+<span class="sourceLineNo">620</span>  }<a name="line.620"></a>
+<span class="sourceLineNo">621</span><a name="line.621"></a>
+<span class="sourceLineNo">622</span>  long getUncompressedDataIndexSize() {<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    return reader.getTrailer().getUncompressedDataIndexSize();<a name="line.623"></a>
+<span class="sourceLineNo">624</span>  }<a name="line.624"></a>
+<span class="sourceLineNo">625</span><a name="line.625"></a>
+<span class="sourceLineNo">626</span>  public long getTotalBloomSize() {<a name="line.626"></a>
+<span class="sourceLineNo">627</span>    if (generalBloomFilter == null)<a name="line.627"></a>
+<span class="sourceLineNo">628</span>      return 0;<a name="line.628"></a>
+<span class="sourceLineNo">629</span>    return generalBloomFilter.getByteSize();<a name="line.629"></a>
+<span class="sourceLineNo">630</span>  }<a name="line.630"></a>
+<span class="sourceLineNo">631</span><a name="line.631"></a>
+<span class="sourceLineNo">632</span>  public int getHFileVersion() {<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    return reader.getTrailer().getMajorVersion();<a name="line.633"></a>
+<span class="sourceLineNo">634</span>  }<a name="line.634"></a>
+<span class="sourceLineNo">635</span><a name="line.635"></a>
+<span class="sourceLineNo">636</span>  public int getHFileMinorVersion() {<a name="line.636"></a>
+<span class="sourceLineNo">637</span>    return reader.getTrailer().getMinorVersion();<a name="line.637"></a>
+<span class="sourceLineNo">638</span>  }<a name="line.638"></a>
+<span class="sourceLineNo">639</span><a name="line.639"></a>
+<span class="sourceLineNo">640</span>  public HFile.Reader getHFileReader() {<a name="line.640"></a>
+<span class="sourceLineNo">641</span>    return reader;<a name="line.641"></a>
+<span class="sourceLineNo">642</span>  }<a name="line.642"></a>
+<span class="sourceLineNo">643</span><a name="line.643"></a>
+<span class="sourceLineNo">644</span>  void disableBloomFilterForTesting() {<a name="line.644"></a>
+<span class="sourceLineNo">645</span>    generalBloomFilter = null;<a name="line.645"></a>
+<span class="sourceLineNo">646</span>    this.deleteFamilyBloomFilter = null;<a name="line.646"></a>
+<span class="sourceLineNo">647</span>  }<a name="line.647"></a>
+<span class="sourceLineNo">648</span><a name="line.648"></a>
+<span class="sourceLineNo">649</span>  public long getMaxTimestamp() {<a name="line.649"></a>
+<span class="sourceLineNo">650</span>    return timeRange == null ? TimeRange.INITIAL_MAX_TIMESTAMP: timeRange.getMax();<a name="line.650"></a>
+<span class="sourceLineNo">651</span>  }<a name="line.651"></a>
+<span class="sourceLineNo">652</span><a name="line.652"></a>
+<span class="sourceLineNo">653</span>  boolean isSkipResetSeqId() {<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    return skipResetSeqId;<a name="line.654"></a>
+<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
+<span class="sourceLineNo">656</span><a name="line.656"></a>
+<span class="sourceLineNo">657</span>  void setSkipResetSeqId(boolean skipResetSeqId) {<a name="line.657"></a>
+<span class="sourceLineNo">658</span>    this.skipResetSeqId = skipResetSeqId;<a name="line.658"></a>
+<span class="sourceLineNo">659</span>  }<a name="line.659"></a>
+<span class="sourceLineNo">660</span><a name="line.660"></a>
+<span class="sourceLineNo">661</span>  public void setListener(Listener listener) {<a name="line.661"></a>
+<span class="sourceLineNo">662</span>    this.listener = listener;<a name="line.662"></a>
+<span class="sourceLineNo">663</span>  }<a name="line.663"></a>
+<span class="sourceLineNo">664</span><a name="line.664"></a>
+<span class="sourceLineNo">665</span>  public interface Listener {<a name="line.665"></a>
+<span class="sourceLineNo">666</span>    void storeFileReaderClosed(StoreFileReader reader);<a name="line.666"></a>
+<span class="sourceLineNo">667</span>  }<a name="line.667"></a>
+<span class="sourceLineNo">668</span>}<a name="line.668"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[25/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
index d2da8f4..27235ad 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
@@ -63,3784 +63,3870 @@
 <span class="sourceLineNo">055</span>import javax.servlet.http.HttpServlet;<a name="line.55"></a>
 <span class="sourceLineNo">056</span>import javax.servlet.http.HttpServletRequest;<a name="line.56"></a>
 <span class="sourceLineNo">057</span>import javax.servlet.http.HttpServletResponse;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.commons.lang3.StringUtils;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.conf.Configuration;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.Path;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.ChoreService;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HConstants;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.ServerName;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableName;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.Result;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.MoveRegionProcedure;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.RegionStateNode;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.assignment.UnassignProcedure;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.master.replication.SyncReplicationReplayWALManager;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.master.replication.TransitPeerSyncReplicationStateProcedure;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.quotas.MasterQuotasObserver;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.replication.SyncReplicationState;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.util.HBaseFsck;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.zookeeper.KeeperException;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.eclipse.jetty.server.Server;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>import org.slf4j.Logger;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>import org.slf4j.LoggerFactory;<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.224"></a>
-<span class="sourceLineNo">225</span><a name="line.225"></a>
-<span class="sourceLineNo">226</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.228"></a>
-<span class="sourceLineNo">229</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.230"></a>
-<span class="sourceLineNo">231</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.234"></a>
-<span class="sourceLineNo">235</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.235"></a>
-<span class="sourceLineNo">236</span> * run the cluster.  All others park themselves in their constructor until<a name="line.236"></a>
-<span class="sourceLineNo">237</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.237"></a>
-<span class="sourceLineNo">238</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.238"></a>
-<span class="sourceLineNo">239</span> *<a name="line.239"></a>
-<span class="sourceLineNo">240</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.240"></a>
-<span class="sourceLineNo">241</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.241"></a>
-<span class="sourceLineNo">242</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.242"></a>
-<span class="sourceLineNo">243</span> *<a name="line.243"></a>
-<span class="sourceLineNo">244</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.244"></a>
-<span class="sourceLineNo">245</span> *<a name="line.245"></a>
-<span class="sourceLineNo">246</span> * @see org.apache.zookeeper.Watcher<a name="line.246"></a>
-<span class="sourceLineNo">247</span> */<a name="line.247"></a>
-<span class="sourceLineNo">248</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.248"></a>
-<span class="sourceLineNo">249</span>@SuppressWarnings("deprecation")<a name="line.249"></a>
-<span class="sourceLineNo">250</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<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>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  private static class InitializationMonitor extends HasThread {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.263"></a>
-<span class="sourceLineNo">264</span>     * true, do nothing otherwise.<a name="line.264"></a>
-<span class="sourceLineNo">265</span>     */<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    public static final boolean HALT_DEFAULT = false;<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    private final HMaster master;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    private final long timeout;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    private final boolean haltOnTimeout;<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    InitializationMonitor(HMaster master) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      super("MasterInitializationMonitor");<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      this.master = master;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      this.setDaemon(true);<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>    @Override<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    public void run() {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      try {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>          Thread.sleep(timeout);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          if (master.isInitialized()) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          } else {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.290"></a>
-<span class="sourceLineNo">291</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.291"></a>
-<span class="sourceLineNo">292</span>            if (haltOnTimeout) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.293"></a>
-<span class="sourceLineNo">294</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.294"></a>
-<span class="sourceLineNo">295</span>              System.exit(-1);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>            }<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      } catch (InterruptedException ie) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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><a name="line.304"></a>
-<span class="sourceLineNo">305</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  //instance into web context.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  public static final String MASTER = "master";<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  // Manager and zk listener for master election<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  private final ActiveMasterManager activeMasterManager;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  // Region server tracker<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  private RegionServerTracker regionServerTracker;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  // Draining region server tracker<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  private DrainingServerTracker drainingServerTracker;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  // Tracker for load balancer state<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>  // Tracker for split and merge state<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.323"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.commons.lang3.StringUtils;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.conf.Configuration;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.fs.Path;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ChoreService;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HConstants;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.ServerName;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableName;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.Result;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.MoveRegionProcedure;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.assignment.RegionStateNode;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.assignment.UnassignProcedure;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.master.replication.SyncReplicationReplayWALManager;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.master.replication.TransitPeerSyncReplicationStateProcedure;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.quotas.MasterQuotasObserver;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.replication.SyncReplicationState;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.util.HBaseFsck;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.util.RetryCounterFactory;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>import org.apache.zookeeper.KeeperException;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.eclipse.jetty.server.Server;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>import org.slf4j.Logger;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>import org.slf4j.LoggerFactory;<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.225"></a>
+<span class="sourceLineNo">226</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.233"></a>
+<span class="sourceLineNo">234</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>/**<a name="line.236"></a>
+<span class="sourceLineNo">237</span> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.237"></a>
+<span class="sourceLineNo">238</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.238"></a>
+<span class="sourceLineNo">239</span> * run the cluster.  All others park themselves in their constructor until<a name="line.239"></a>
+<span class="sourceLineNo">240</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.240"></a>
+<span class="sourceLineNo">241</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.241"></a>
+<span class="sourceLineNo">242</span> *<a name="line.242"></a>
+<span class="sourceLineNo">243</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.243"></a>
+<span class="sourceLineNo">244</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.244"></a>
+<span class="sourceLineNo">245</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.245"></a>
+<span class="sourceLineNo">246</span> *<a name="line.246"></a>
+<span class="sourceLineNo">247</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.247"></a>
+<span class="sourceLineNo">248</span> *<a name="line.248"></a>
+<span class="sourceLineNo">249</span> * @see org.apache.zookeeper.Watcher<a name="line.249"></a>
+<span class="sourceLineNo">250</span> */<a name="line.250"></a>
+<span class="sourceLineNo">251</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.251"></a>
+<span class="sourceLineNo">252</span>@SuppressWarnings("deprecation")<a name="line.252"></a>
+<span class="sourceLineNo">253</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<a name="line.254"></a>
+<span class="sourceLineNo">255</span><a name="line.255"></a>
+<span class="sourceLineNo">256</span>  /**<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   */<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  private static class InitializationMonitor extends HasThread {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     * true, do nothing otherwise.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     */<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    public static final boolean HALT_DEFAULT = false;<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span>    private final HMaster master;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    private final long timeout;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    private final boolean haltOnTimeout;<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    InitializationMonitor(HMaster master) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      super("MasterInitializationMonitor");<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      this.master = master;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      this.setDaemon(true);<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 void run() {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      try {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>          Thread.sleep(timeout);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>          if (master.isInitialized()) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          } else {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.293"></a>
+<span class="sourceLineNo">294</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            if (haltOnTimeout) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.296"></a>
+<span class="sourceLineNo">297</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.297"></a>
+<span class="sourceLineNo">298</span>              System.exit(-1);<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>        }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      } catch (InterruptedException ie) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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>  }<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  //instance into web context.<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  public static final String MASTER = "master";<a name="line.310"></a>
+<span class="sourceLineNo">311</span><a name="line.311"></a>
+<span class="sourceLineNo">312</span>  // Manager and zk listener for master election<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  private final ActiveMasterManager activeMasterManager;<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  // Region server tracker<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  private RegionServerTracker regionServerTracker;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  // Draining region server tracker<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private DrainingServerTracker drainingServerTracker;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  // Tracker for load balancer state<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.323"></a>
 <span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  // Tracker for region normalizer state<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.326"></a>
+<span class="sourceLineNo">325</span>  // Tracker for split and merge state<a name="line.325"></a>
+<span class="sourceLineNo">326</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.326"></a>
 <span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  //Tracker for master maintenance mode setting<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.329"></a>
+<span class="sourceLineNo">328</span>  // Tracker for region normalizer state<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.329"></a>
 <span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  private ClusterSchemaService clusterSchemaService;<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    "hbase.master.wait.on.service.seconds";<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>  // Metrics for the HMaster<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  final MetricsMaster metricsMaster;<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  // file system manager for the master FS operations<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  private MasterFileSystem fileSystemManager;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  private MasterWalManager walManager;<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>  // server manager to deal with region server info<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  private volatile ServerManager serverManager;<a name="line.344"></a>
+<span class="sourceLineNo">331</span>  //Tracker for master maintenance mode setting<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>  private ClusterSchemaService clusterSchemaService;<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    "hbase.master.wait.on.service.seconds";<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>  // Metrics for the HMaster<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  final MetricsMaster metricsMaster;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  // file system manager for the master FS operations<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  private MasterFileSystem fileSystemManager;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  private MasterWalManager walManager;<a name="line.344"></a>
 <span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  // manager of assignment nodes in zookeeper<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private AssignmentManager assignmentManager;<a name="line.347"></a>
+<span class="sourceLineNo">346</span>  // server manager to deal with region server info<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  private volatile ServerManager serverManager;<a name="line.347"></a>
 <span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  // manager of replication<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.350"></a>
+<span class="sourceLineNo">349</span>  // manager of assignment nodes in zookeeper<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  private AssignmentManager assignmentManager;<a name="line.350"></a>
 <span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  private SyncReplicationReplayWALManager syncReplicationReplayWALManager;<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span>  // buffer for "fatal error" notices from region servers<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  // in the cluster. This is only used for assisting<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  // operations/debugging.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>  // flag set after we become the active master (used for testing)<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  private volatile boolean activeMaster = false;<a name="line.360"></a>
+<span class="sourceLineNo">352</span>  // manager of replication<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  private SyncReplicationReplayWALManager syncReplicationReplayWALManager;<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>  // buffer for "fatal error" notices from region servers<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  // in the cluster. This is only used for assisting<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  // operations/debugging.<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.360"></a>
 <span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // flag set after we complete initialization once active<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.363"></a>
+<span class="sourceLineNo">362</span>  // flag set after we become the active master (used for testing)<a name="line.362"></a>
+<span class="sourceLineNo">363</span>  private volatile boolean activeMaster = false;<a name="line.363"></a>
 <span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>  // flag set after master services are started,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  // initialization may have not completed yet.<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  volatile boolean serviceStarted = false;<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  // Maximum time we should run balancer for<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  private final int maxBlancingTime;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  // Maximum percent of regions in transition when balancing<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  private final double maxRitPercent;<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  private final LockManager lockManager = new LockManager(this);<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>  private LoadBalancer balancer;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  private RegionNormalizer normalizer;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  private BalancerChore balancerChore;<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  private RegionNormalizerChore normalizerChore;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  private ClusterStatusChore clusterStatusChore;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span>  CatalogJanitor catalogJanitorChore;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  private LogCleaner logCleaner;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  private HFileCleaner hfileCleaner;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  private MobCompactionChore mobCompactChore;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  // used to synchronize the mobCompactionStates<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  // save the information of mob compactions in tables.<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  MasterCoprocessorHost cpHost;<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  private final boolean preLoadTableDescriptors;<a name="line.398"></a>
-<span class="sourceLineNo">399</span><a name="line.399"></a>
-<span class="sourceLineNo">400</span>  // Time stamps for when a hmaster became active<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  private long masterActiveTime;<a name="line.401"></a>
+<span class="sourceLineNo">365</span>  // flag set after we complete initialization once active<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>  // flag set after master services are started,<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  // initialization may have not completed yet.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  volatile boolean serviceStarted = false;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  // Maximum time we should run balancer for<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  private final int maxBlancingTime;<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  // Maximum percent of regions in transition when balancing<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  private final double maxRitPercent;<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private final LockManager lockManager = new LockManager(this);<a name="line.377"></a>
+<span class="sourceLineNo">378</span><a name="line.378"></a>
+<span class="sourceLineNo">379</span>  private LoadBalancer balancer;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  private RegionNormalizer normalizer;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  private BalancerChore balancerChore;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  private RegionNormalizerChore normalizerChore;<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  private ClusterStatusChore clusterStatusChore;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  CatalogJanitor catalogJanitorChore;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>  private LogCleaner logCleaner;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>  private HFileCleaner hfileCleaner;<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  private MobCompactionChore mobCompactChore;<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  // used to synchronize the mobCompactionStates<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  // save the information of mob compactions in tables.<a name="line.395"></a>
+<span class="sourceLineNo">396</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.397"></a>
+<span class="sourceLineNo">398</span><a name="line.398"></a>
+<span class="sourceLineNo">399</span>  MasterCoprocessorHost cpHost;<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>  private final boolean preLoadTableDescriptors;<a name="line.401"></a>
 <span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  private long masterFinishedInitializationTime;<a name="line.404"></a>
+<span class="sourceLineNo">403</span>  // Time stamps for when a hmaster became active<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  private long masterActiveTime;<a name="line.404"></a>
 <span class="sourceLineNo">405</span><a name="line.405"></a>
-<span class="sourceLineNo">406</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private final boolean masterCheckCompression;<a name="line.407"></a>
+<span class="sourceLineNo">406</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  private long masterFinishedInitializationTime;<a name="line.407"></a>
 <span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  //should we check encryption settings at master side, default true<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private final boolean masterCheckEncryption;<a name="line.410"></a>
+<span class="sourceLineNo">409</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  private final boolean masterCheckCompression;<a name="line.410"></a>
 <span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  // monitor for snapshot of hbase tables<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  SnapshotManager snapshotManager;<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  // monitor for distributed procedures<a name="line.416"></a>
-<span class="sourceLineNo">417</span>  private MasterProcedureManagerHost mpmHost;<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  private volatile MasterQuotaManager quotaManager;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  private QuotaObserverChore quotaObserverChore;<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.423"></a>
-<span class="sourceLineNo">424</span><a name="line.424"></a>
-<span class="sourceLineNo">425</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  private WALProcedureStore procedureStore;<a name="line.426"></a>
+<span class="sourceLineNo">412</span>  //should we check encryption settings at master side, default true<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  private final boolean masterCheckEncryption;<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>  // monitor for snapshot of hbase tables<a name="line.417"></a>
+<span class="sourceLineNo">418</span>  SnapshotManager snapshotManager;<a name="line.418"></a>
+<span class="sourceLineNo">419</span>  // monitor for distributed procedures<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  private MasterProcedureManagerHost mpmHost;<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.422"></a>
+<span class="sourceLineNo">423</span>  private volatile MasterQuotaManager quotaManager;<a name="line.423"></a>
+<span class="sourceLineNo">424</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  private QuotaObserverChore quotaObserverChore;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.426"></a>
 <span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>  // handle table states<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  private TableStateManager tableStateManager;<a name="line.429"></a>
+<span class="sourceLineNo">428</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  private WALProcedureStore procedureStore;<a name="line.429"></a>
 <span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>  private long splitPlanCount;<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  private long mergePlanCount;<a name="line.432"></a>
+<span class="sourceLineNo">431</span>  // handle table states<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  private TableStateManager tableStateManager;<a name="line.432"></a>
 <span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span>  /* Handle favored nodes information */<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  private FavoredNodesManager favoredNodesManager;<a name="line.435"></a>
+<span class="sourceLineNo">434</span>  private long splitPlanCount;<a name="line.434"></a>
+<span class="sourceLineNo">435</span>  private long mergePlanCount;<a name="line.435"></a>
 <span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  private Server masterJettyServer;<a name="line.438"></a>
+<span class="sourceLineNo">437</span>  /* Handle favored nodes information */<a name="line.437"></a>
+<span class="sourceLineNo">438</span>  private FavoredNodesManager favoredNodesManager;<a name="line.438"></a>
 <span class="sourceLineNo">439</span><a name="line.439"></a>
-<span class="sourceLineNo">440</span>  public static class RedirectServlet extends HttpServlet {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    private final int regionServerInfoPort;<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    private final String regionServerHostname;<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>    /**<a name="line.445"></a>
-<span class="sourceLineNo">446</span>     * @param infoServer that we're trying to send all requests to<a name="line.446"></a>
-<span class="sourceLineNo">447</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.447"></a>
-<span class="sourceLineNo">448</span>     */<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>       regionServerInfoPort = infoServer.getPort();<a name="line.450"></a>
-<span class="sourceLineNo">451</span>       regionServerHostname = hostname;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    @Override<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    public void doGet(HttpServletRequest request,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      String redirectHost = regionServerHostname;<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      if(redirectHost == null) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        redirectHost = request.getServerName();<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.461"></a>
-<span class="sourceLineNo">462</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.462"></a>
-<span class="sourceLineNo">463</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.463"></a>
-<span class="sourceLineNo">464</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.464"></a>
-<span class="sourceLineNo">465</span>              "to an appropriate hostname.");<a name="line.465"></a>
-<span class="sourceLineNo">466</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.466"></a>
-<span class="sourceLineNo">467</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.467"></a>
-<span class="sourceLineNo">468</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.468"></a>
-<span class="sourceLineNo">469</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          return;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      String redirectUrl = request.getScheme() + "://"<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.476"></a>
-<span class="sourceLineNo">477</span>        + request.getRequestURI();<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      response.sendRedirect(redirectUrl);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    }<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>  /**<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * Initializ

<TRUNCATED>

[39/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index a4fe324..0d1a56e 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -13020,6 +13020,8 @@
 <dd>
 <div class="block">Closes and archives the compacted files under this store</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HStore.html#closeAndArchiveCompactedFiles-boolean-">closeAndArchiveCompactedFiles(boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/WALSplitter.OutputSink.html#closeAndCleanCompleted">closeAndCleanCompleted</a></span> - Variable in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/WALSplitter.OutputSink.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.OutputSink</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeAndOfflineRegionForSplitOrMerge-java.util.List-">closeAndOfflineRegionForSplitOrMerge(List&lt;String&gt;)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></dt>
@@ -13084,6 +13086,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/SegmentScanner.html#closed">closed</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/SegmentScanner.html" title="class in org.apache.hadoop.hbase.regionserver">SegmentScanner</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html#closed">closed</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileScanner.html#closed">closed</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.html#closed">closed</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.html" title="class in org.apache.hadoop.hbase.regionserver.wal">AbstractFSWAL</a></dt>
@@ -13303,6 +13307,8 @@
 <dd>
 <div class="block">Closes the readers of store files.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HStoreFile.html#closeStreamReaders-boolean-">closeStreamReaders(boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReader.html#closeStreams--">closeStreams()</a></span> - Method in interface org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFileBlock.FSReader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileBlock.FSReader</a></dt>
 <dd>
 <div class="block">Closes the backing streams</div>
@@ -41687,7 +41693,10 @@
 <div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
 &nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterWalManager.html#getLiveServersFromWALDir--">getLiveServersFromWALDir()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterWalManager.html" title="class in org.apache.hadoop.hbase.master">MasterWalManager</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Get Servernames that COULD BE 'alive'; excludes those that have a '-splitting' suffix as these
+ are already being split -- they cannot be 'alive'.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ClusterStatus.html#getLoad-org.apache.hadoop.hbase.ServerName-">getLoad(ServerName)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ClusterStatus.html" title="class in org.apache.hadoop.hbase">ClusterStatus</a></dt>
 <dd>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>
@@ -49647,6 +49656,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ZKUtil.html#getServerNameOrEmptyString-byte:A-">getServerNameOrEmptyString(byte[])</a></span> - Static method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZKUtil.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterWalManager.html#getServerNamesFromWALDirPath-org.apache.hadoop.fs.PathFilter-">getServerNamesFromWALDirPath(PathFilter)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterWalManager.html" title="class in org.apache.hadoop.hbase.master">MasterWalManager</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/RegionStates.html#getServerNode-org.apache.hadoop.hbase.ServerName-">getServerNode(ServerName)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/RegionStates.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html#getServerOperationType--">getServerOperationType()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">ServerCrashProcedure</a></dt>
@@ -50456,6 +50467,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactSplit.html#getSplitThreadNum--">getSplitThreadNum()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactSplit.html" title="class in org.apache.hadoop.hbase.regionserver">CompactSplit</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterWalManager.html#getSplittingServersFromWALDir--">getSplittingServersFromWALDir()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterWalManager.html" title="class in org.apache.hadoop.hbase.master">MasterWalManager</a></dt>
+<dd>
+<div class="block">Get Servernames which are currently splitting; paths have a '-splitting' suffix.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/VersionInfo.html#getSrcChecksum--">getSrcChecksum()</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/VersionInfo.html" title="class in org.apache.hadoop.hbase.util">VersionInfo</a></dt>
 <dd>
 <div class="block">Get the checksum of the source files from which Hadoop was compiled.</div>
@@ -54223,6 +54238,8 @@
 <dd>
 <div class="block">Construct the directory name for all WALs on a given server.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterWalManager.html#getWALDirPaths-org.apache.hadoop.fs.PathFilter-">getWALDirPaths(PathFilter)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterWalManager.html" title="class in org.apache.hadoop.hbase.master">MasterWalManager</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html#getWalEdit-int-">getWalEdit(int)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/WALEntryBatch.html#getWalEntries--">getWalEntries()</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>
@@ -64508,6 +64525,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/RegionStates.html#isRegionOnline-org.apache.hadoop.hbase.client.RegionInfo-">isRegionOnline(RegionInfo)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/RegionStates.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/HMaster.html#isRegionOnline-org.apache.hadoop.hbase.client.RegionInfo-">isRegionOnline(RegionInfo)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html#isRegionOverThreshold-org.apache.hadoop.hbase.client.RegionInfo-">isRegionOverThreshold(RegionInfo)</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionStat.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager.RegionInTransitionStat</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/ServerRegionReplicaUtil.html#isRegionReplicaReplicationEnabled-org.apache.hadoop.conf.Configuration-">isRegionReplicaReplicationEnabled(Configuration)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/ServerRegionReplicaUtil.html" title="class in org.apache.hadoop.hbase.util">ServerRegionReplicaUtil</a></dt>
@@ -67330,6 +67349,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/Leases.Lease.html#listener">listener</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/Leases.Lease.html" title="class in org.apache.hadoop.hbase.regionserver">Leases.Lease</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html#listener">listener</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/http/HttpServer.ListenerInfo.html#ListenerInfo-boolean-org.eclipse.jetty.server.ServerConnector-">ListenerInfo(boolean, ServerConnector)</a></span> - Constructor for class org.apache.hadoop.hbase.http.<a href="org/apache/hadoop/hbase/http/HttpServer.ListenerInfo.html" title="class in org.apache.hadoop.hbase.http">HttpServer.ListenerInfo</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/errorhandling/ForeignExceptionDispatcher.html#listeners">listeners</a></span> - Variable in class org.apache.hadoop.hbase.errorhandling.<a href="org/apache/hadoop/hbase/errorhandling/ForeignExceptionDispatcher.html" title="class in org.apache.hadoop.hbase.errorhandling">ForeignExceptionDispatcher</a></dt>
@@ -92409,7 +92430,7 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#removeCompactedFiles-java.util.Collection-">removeCompactedFiles(Collection&lt;HStoreFile&gt;)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html" title="class in org.apache.hadoop.hbase.regionserver">DefaultStoreFileManager</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HStore.html#removeCompactedfiles-java.util.Collection-">removeCompactedfiles(Collection&lt;HStoreFile&gt;)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HStore.html#removeCompactedfiles-java.util.Collection-boolean-">removeCompactedfiles(Collection&lt;HStoreFile&gt;, boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a></dt>
 <dd>
 <div class="block">Archives and removes the compacted files</div>
 </dd>
@@ -95684,6 +95705,8 @@ service.</div>
 </dd>
 <dt><a href="org/apache/hadoop/hbase/util/RetryCounterFactory.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">RetryCounterFactory</span></a> - Class in <a href="org/apache/hadoop/hbase/util/package-summary.html">org.apache.hadoop.hbase.util</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RetryCounterFactory.html#RetryCounterFactory-int-">RetryCounterFactory(int)</a></span> - Constructor for class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RetryCounterFactory.html" title="class in org.apache.hadoop.hbase.util">RetryCounterFactory</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RetryCounterFactory.html#RetryCounterFactory-int-int-">RetryCounterFactory(int, int)</a></span> - Constructor for class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RetryCounterFactory.html" title="class in org.apache.hadoop.hbase.util">RetryCounterFactory</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RetryCounterFactory.html#RetryCounterFactory-int-int-int-">RetryCounterFactory(int, int, int)</a></span> - Constructor for class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RetryCounterFactory.html" title="class in org.apache.hadoop.hbase.util">RetryCounterFactory</a></dt>
@@ -102861,6 +102884,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/UserQuotaState.html#setLimiter-java.util.Map-K-org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas-">setLimiter(Map&lt;K, QuotaLimiter&gt;, K, QuotaProtos.Quotas)</a></span> - Method in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/UserQuotaState.html" title="class in org.apache.hadoop.hbase.quotas">UserQuotaState</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setListener-org.apache.hadoop.hbase.regionserver.StoreFileReader.Listener-">setListener(StoreFileReader.Listener)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/model/StorageClusterStatusModel.html#setLiveNodes-java.util.List-">setLiveNodes(List&lt;StorageClusterStatusModel.Node&gt;)</a></span> - Method in class org.apache.hadoop.hbase.rest.model.<a href="org/apache/hadoop/hbase/rest/model/StorageClusterStatusModel.html" title="class in org.apache.hadoop.hbase.rest.model">StorageClusterStatusModel</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ClusterMetricsBuilder.html#setLiveServerMetrics-java.util.Map-">setLiveServerMetrics(Map&lt;ServerName, ServerMetrics&gt;)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ClusterMetricsBuilder.html" title="class in org.apache.hadoop.hbase">ClusterMetricsBuilder</a></dt>
@@ -109137,7 +109162,7 @@ service.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html#start--">start()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/RSProcedureDispatcher.html" title="class in org.apache.hadoop.hbase.master.procedure">RSProcedureDispatcher</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/RegionServerTracker.html#start-java.util.Set-java.util.Set-">start(Set&lt;ServerName&gt;, Set&lt;ServerName&gt;)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/RegionServerTracker.html" title="class in org.apache.hadoop.hbase.master">RegionServerTracker</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/RegionServerTracker.html#start-java.util.Set-java.util.Set-java.util.Set-">start(Set&lt;ServerName&gt;, Set&lt;ServerName&gt;, Set&lt;ServerName&gt;)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/RegionServerTracker.html" title="class in org.apache.hadoop.hbase.master">RegionServerTracker</a></dt>
 <dd>
 <div class="block">Starts the tracking of online RegionServers.</div>
 </dd>
@@ -110876,6 +110901,12 @@ service.</div>
 <dd>
 <div class="block">ONLY USE DEFAULT CONSTRUCTOR FOR UNIT TESTS</div>
 </dd>
+<dt><a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">StoreFileReader.Listener</span></a> - Interface in <a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HStoreFile.html#storeFileReaderClosed-org.apache.hadoop.hbase.regionserver.StoreFileReader-">storeFileReaderClosed(StoreFileReader)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html#storeFileReaderClosed-org.apache.hadoop.hbase.regionserver.StoreFileReader-">storeFileReaderClosed(StoreFileReader)</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/FileArchiverNotifierImpl.StoreFileReference.html#StoreFileReference-java.lang.String-">StoreFileReference(String)</a></span> - Constructor for class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/FileArchiverNotifierImpl.StoreFileReference.html" title="class in org.apache.hadoop.hbase.quotas">FileArchiverNotifierImpl.StoreFileReference</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegionServer.html#storefileRefresher">storefileRefresher</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></dt>
@@ -111090,6 +111121,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/FSDataInputStreamWrapper.html#streamNoFsChecksumFirstCreateLock">streamNoFsChecksumFirstCreateLock</a></span> - Variable in class org.apache.hadoop.hbase.io.<a href="org/apache/hadoop/hbase/io/FSDataInputStreamWrapper.html" title="class in org.apache.hadoop.hbase.io">FSDataInputStreamWrapper</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HStoreFile.html#streamReaders">streamReaders</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/io/util/StreamUtils.html" title="class in org.apache.hadoop.hbase.io.util"><span class="typeNameLink">StreamUtils</span></a> - Class in <a href="org/apache/hadoop/hbase/io/util/package-summary.html">org.apache.hadoop.hbase.io.util</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/util/StreamUtils.html#StreamUtils--">StreamUtils()</a></span> - Constructor for class org.apache.hadoop.hbase.io.util.<a href="org/apache/hadoop/hbase/io/util/StreamUtils.html" title="class in org.apache.hadoop.hbase.io.util">StreamUtils</a></dt>
@@ -122096,7 +122129,9 @@ the order they are declared.</div>
  wait till a backup master becomes active.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegionServer.html#waitForMasterActive--">waitForMasterActive()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></dt>
-<dd>&nbsp;</dd>
+<dd>
+<div class="block">Wait for an active Master.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/AsyncProcess.html#waitForMaximumCurrentTasks-int-org.apache.hadoop.hbase.TableName-">waitForMaximumCurrentTasks(int, TableName)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/AsyncProcess.html" title="class in org.apache.hadoop.hbase.client">AsyncProcess</a></dt>
 <dd>
 <div class="block">Wait until the async does not have more than max tasks in progress.</div>
@@ -122372,6 +122407,14 @@ the order they are declared.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/WALSplitter.EntryBuffers.html#waitUntilDrained--">waitUntilDrained()</a></span> - Method in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/WALSplitter.EntryBuffers.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.EntryBuffers</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/HMaster.html#waitUntilMetaOnline--">waitUntilMetaOnline()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></dt>
+<dd>
+<div class="block">Check hbase:meta is up and ready for reading.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/HMaster.html#waitUntilNamespaceOnline--">waitUntilNamespaceOnline()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></dt>
+<dd>
+<div class="block">Check hbase:namespace table is assigned.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/access/ZKPermissionWatcher.html#waitUntilStarted--">waitUntilStarted()</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/ZKPermissionWatcher.html" title="class in org.apache.hadoop.hbase.security.access">ZKPermissionWatcher</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/LogRoller.html#waitUntilWalRollFinished--">waitUntilWalRollFinished()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/LogRoller.html" title="class in org.apache.hadoop.hbase.regionserver">LogRoller</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/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 a2ca0d5..1e43e89 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -167,10 +167,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.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>
 <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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html b/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html
index d7b3e28..8f67440 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html
@@ -3406,7 +3406,10 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code><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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
-<td class="colLast"><span class="typeNameLabel">MasterWalManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#getLiveServersFromWALDir--">getLiveServersFromWALDir</a></span>()</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">MasterWalManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#getLiveServersFromWALDir--">getLiveServersFromWALDir</a></span>()</code>
+<div class="block">Get Servernames that COULD BE 'alive'; excludes those that have a '-splitting' suffix as these
+ are already being split -- they cannot be 'alive'.</div>
+</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code><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/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a>&gt;</code></td>
@@ -3450,6 +3453,16 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <td class="colLast"><span class="typeNameLabel">RegionServerTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html#getServerInfo-java.lang.String-">getServerInfo</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;name)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code><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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">MasterWalManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#getServerNamesFromWALDirPath-org.apache.hadoop.fs.PathFilter-">getServerNamesFromWALDirPath</a></span>(org.apache.hadoop.fs.PathFilter&nbsp;filter)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code><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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">MasterWalManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#getSplittingServersFromWALDir--">getSplittingServersFromWALDir</a></span>()</code>
+<div class="block">Get Servernames which are currently splitting; paths have a '-splitting' suffix.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>(package private) <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;</code></td>
 <td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableRegionForRow-org.apache.hadoop.hbase.TableName-byte:A-">getTableRegionForRow</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                     byte[]&nbsp;rowKey)</code>
@@ -3988,15 +4001,25 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html#start-java.util.Set-java.util.Set-">start</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;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;deadServersFromPE,
-     <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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;liveServersFromWALDir)</code>
+<td class="colLast"><span class="typeNameLabel">RegionServerTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html#start-java.util.Set-java.util.Set-java.util.Set-">start</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;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;deadServersFromPE,
+     <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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;liveServersFromWALDir,
+     <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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;splittingServersFromWALDir)</code>
 <div class="block">Starts the tracking of online RegionServers.</div>
 </td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html#start-java.util.Set-java.util.Set-">start</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;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;deadServersFromPE,
-     <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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;liveServersFromWALDir)</code>
+<td class="colLast"><span class="typeNameLabel">RegionServerTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html#start-java.util.Set-java.util.Set-java.util.Set-">start</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;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;deadServersFromPE,
+     <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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;liveServersFromWALDir,
+     <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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;splittingServersFromWALDir)</code>
+<div class="block">Starts the tracking of online RegionServers.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">RegionServerTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html#start-java.util.Set-java.util.Set-java.util.Set-">start</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;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;deadServersFromPE,
+     <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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;liveServersFromWALDir,
+     <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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;splittingServersFromWALDir)</code>
 <div class="block">Starts the tracking of online RegionServers.</div>
 </td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
index 2b3833f..3d89e6b 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
@@ -2397,6 +2397,10 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html#isRegionInServerManagerStates-org.apache.hadoop.hbase.client.RegionInfo-">isRegionInServerManagerStates</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html#isRegionOnline-org.apache.hadoop.hbase.client.RegionInfo-">isRegionOnline</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;ri)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterServices.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html#mergeRegions-org.apache.hadoop.hbase.client.RegionInfo:A-boolean-long-long-">mergeRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regionsToMerge,
             boolean&nbsp;forcible,
@@ -2405,24 +2409,24 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Merge regions in a table.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html#mergeRegions-org.apache.hadoop.hbase.client.RegionInfo:A-boolean-long-long-">mergeRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regionsToMerge,
             boolean&nbsp;forcible,
             long&nbsp;nonceGroup,
             long&nbsp;nonce)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#postAssign-org.apache.hadoop.hbase.client.RegionInfo-">postAssign</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#postCompletedCreateTableAction-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.RegionInfo:A-org.apache.hadoop.hbase.security.User-">postCompletedCreateTableAction</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd,
                               <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regions,
                               <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#postCompletedMergeRegionsAction-org.apache.hadoop.hbase.client.RegionInfo:A-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.security.User-">postCompletedMergeRegionsAction</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regionsToMerge,
                                <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;mergedRegion,
@@ -2430,7 +2434,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Invoked after completing merge regions operation</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#postCompletedMergeRegionsAction-org.apache.hadoop.hbase.client.RegionInfo:A-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.security.User-">postCompletedMergeRegionsAction</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regionsToMerge,
                                <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;mergedRegion,
@@ -2438,7 +2442,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Invoked after completing merge regions operation</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#postCompletedSplitRegionAction-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.security.User-">postCompletedSplitRegionAction</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfoA,
                               <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfoB,
@@ -2446,16 +2450,16 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Invoked just after a split</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#postCreateTable-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.RegionInfo:A-">postCreateTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd,
                <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regions)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#postMergeRegions-org.apache.hadoop.hbase.client.RegionInfo:A-">postMergeRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regionsToMerge)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#postMergeRegionsCommit-org.apache.hadoop.hbase.client.RegionInfo:A-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.security.User-">postMergeRegionsCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regionsToMerge,
                       <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;mergedRegion,
@@ -2463,7 +2467,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Invoked after merge regions operation writes the new region to hbase:meta</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#postMergeRegionsCommit-org.apache.hadoop.hbase.client.RegionInfo:A-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.security.User-">postMergeRegionsCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regionsToMerge,
                       <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;mergedRegion,
@@ -2471,17 +2475,17 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Invoked after merge regions operation writes the new region to hbase:meta</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#postMove-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerName-">postMove</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;region,
         <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;srcServer,
         <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;destServer)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#postRegionOffline-org.apache.hadoop.hbase.client.RegionInfo-">postRegionOffline</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#postRequestLock-java.lang.String-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.RegionInfo:A-org.apache.hadoop.hbase.procedure2.LockType-java.lang.String-">postRequestLock</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;namespace,
                <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -2489,45 +2493,45 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
                <a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockType.html" title="enum in org.apache.hadoop.hbase.procedure2">LockType</a>&nbsp;type,
                <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;description)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#postRollBackMergeRegionsAction-org.apache.hadoop.hbase.client.RegionInfo:A-org.apache.hadoop.hbase.security.User-">postRollBackMergeRegionsAction</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regionsToMerge,
                               <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>
 <div class="block">Invoked after rollback merge regions operation</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#postUnassign-org.apache.hadoop.hbase.client.RegionInfo-boolean-">postUnassign</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
             boolean&nbsp;force)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#preAssign-org.apache.hadoop.hbase.client.RegionInfo-">preAssign</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#preCreateTable-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.RegionInfo:A-">preCreateTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd,
               <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regions)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#preCreateTableAction-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.RegionInfo:A-org.apache.hadoop.hbase.security.User-">preCreateTableAction</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd,
                     <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regions,
                     <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#preMergeRegions-org.apache.hadoop.hbase.client.RegionInfo:A-">preMergeRegions</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regionsToMerge)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#preMergeRegionsAction-org.apache.hadoop.hbase.client.RegionInfo:A-org.apache.hadoop.hbase.security.User-">preMergeRegionsAction</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regionsToMerge,
                      <a href="../../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)</code>
 <div class="block">Invoked just before a merge</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#preMergeRegionsCommit-org.apache.hadoop.hbase.client.RegionInfo:A-java.util.List-org.apache.hadoop.hbase.security.User-">preMergeRegionsCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regionsToMerge,
                      <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;metaEntries,
@@ -2535,17 +2539,17 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Invoked before merge regions operation writes the new region to hbase:meta</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#preMove-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerName-">preMove</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;region,
        <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;srcServer,
        <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;destServer)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#preRegionOffline-org.apache.hadoop.hbase.client.RegionInfo-">preRegionOffline</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#preRequestLock-java.lang.String-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.RegionInfo:A-org.apache.hadoop.hbase.procedure2.LockType-java.lang.String-">preRequestLock</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;namespace,
               <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
@@ -2553,45 +2557,45 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
               <a href="../../../../../../org/apache/hadoop/hbase/procedure2/LockType.html" title="enum in org.apache.hadoop.hbase.procedure2">LockType</a>&nbsp;type,
               <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;description)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#preUnassign-org.apache.hadoop.hbase.client.RegionInfo-boolean-">preUnassign</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
            boolean&nbsp;force)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a></code></td>
 <td class="colLast"><span class="typeNameLabel">LoadBalancer.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html#randomAssignment-org.apache.hadoop.hbase.client.RegionInfo-java.util.List-">randomAssignment</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
                 <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;servers)</code>
 <div class="block">Get a random region server from the list</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">LoadBalancer.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html#regionOffline-org.apache.hadoop.hbase.client.RegionInfo-">regionOffline</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>
 <div class="block">Marks the region as offline at balancer.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">LoadBalancer.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html#regionOnline-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">regionOnline</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
             <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>
 <div class="block">Marks the region as online at balancer.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html#removeRegion-org.apache.hadoop.hbase.client.RegionInfo-">removeRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</code>
 <div class="block">Called by delete table and similar to notify the ServerManager that a region was removed.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html#sendRegionWarmup-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.client.RegionInfo-">sendRegionWarmup</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;server,
                 <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;region)</code>
 <div class="block">Sends a WARMUP RPC to the specified server to warmup the specified region.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterServices.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html#splitRegion-org.apache.hadoop.hbase.client.RegionInfo-byte:A-long-long-">splitRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
            byte[]&nbsp;splitRow,
@@ -2600,7 +2604,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Split a region.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html#splitRegion-org.apache.hadoop.hbase.client.RegionInfo-byte:A-long-long-">splitRegion</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
            byte[]&nbsp;splitRow,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/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 c9d6ff6..1c0a69f 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -555,24 +555,24 @@
 <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.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/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/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/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/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/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/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.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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/SnapshotType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
index 329f62f..e67b778 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
@@ -201,8 +201,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.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.MutationType.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">RegionObserver.MutationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/MetaTableMetrics.MetaTableOps.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">MetaTableMetrics.MetaTableOps</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.MutationType.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">RegionObserver.MutationType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/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 93706a7..ab795a0 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/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/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/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.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>
 <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/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/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/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>
 </ul>
 </li>
 </ul>


[13/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html
index d5face4..db404ab 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStoreFile.html
@@ -31,573 +31,606 @@
 <span class="sourceLineNo">023</span>import java.util.Map;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import java.util.Optional;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import java.util.OptionalLong;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.conf.Configuration;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.fs.FileSystem;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.fs.Path;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.Cell;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.io.hfile.BlockType;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.slf4j.Logger;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.slf4j.LoggerFactory;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.44"></a>
+<span class="sourceLineNo">026</span>import java.util.Set;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.concurrent.ConcurrentHashMap;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.conf.Configuration;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.fs.FileSystem;<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.Cell;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HDFSBlocksDistribution;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.io.TimeRange;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.io.hfile.BlockType;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.util.BloomFilterFactory;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.44"></a>
 <span class="sourceLineNo">045</span><a name="line.45"></a>
-<span class="sourceLineNo">046</span>/**<a name="line.46"></a>
-<span class="sourceLineNo">047</span> * A Store data file.  Stores usually have one or more of these files.  They<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * are produced by flushing the memstore to disk.  To<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * create, instantiate a writer using {@link StoreFileWriter.Builder}<a name="line.49"></a>
-<span class="sourceLineNo">050</span> * and append data. Be sure to add any metadata before calling close on the<a name="line.50"></a>
-<span class="sourceLineNo">051</span> * Writer (Use the appendMetadata convenience methods). On close, a StoreFile<a name="line.51"></a>
-<span class="sourceLineNo">052</span> * is sitting in the Filesystem.  To refer to it, create a StoreFile instance<a name="line.52"></a>
-<span class="sourceLineNo">053</span> * passing filesystem and path.  To read, call {@link #initReader()}<a name="line.53"></a>
-<span class="sourceLineNo">054</span> * &lt;p&gt;StoreFiles may also reference store files in another Store.<a name="line.54"></a>
-<span class="sourceLineNo">055</span> *<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * The reason for this weird pattern where you use a different instance for the<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * writer and a reader is that we write once but read a lot more.<a name="line.57"></a>
-<span class="sourceLineNo">058</span> */<a name="line.58"></a>
-<span class="sourceLineNo">059</span>@InterfaceAudience.Private<a name="line.59"></a>
-<span class="sourceLineNo">060</span>public class HStoreFile implements StoreFile {<a name="line.60"></a>
-<span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>  private static final Logger LOG = LoggerFactory.getLogger(HStoreFile.class.getName());<a name="line.62"></a>
-<span class="sourceLineNo">063</span><a name="line.63"></a>
-<span class="sourceLineNo">064</span>  public static final String STORE_FILE_READER_NO_READAHEAD = "hbase.store.reader.no-readahead";<a name="line.64"></a>
-<span class="sourceLineNo">065</span><a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private static final boolean DEFAULT_STORE_FILE_READER_NO_READAHEAD = false;<a name="line.66"></a>
+<span class="sourceLineNo">046</span>import org.slf4j.Logger;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.slf4j.LoggerFactory;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hbase.thirdparty.com.google.common.base.Preconditions;<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>/**<a name="line.52"></a>
+<span class="sourceLineNo">053</span> * A Store data file.  Stores usually have one or more of these files.  They<a name="line.53"></a>
+<span class="sourceLineNo">054</span> * are produced by flushing the memstore to disk.  To<a name="line.54"></a>
+<span class="sourceLineNo">055</span> * create, instantiate a writer using {@link StoreFileWriter.Builder}<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * and append data. Be sure to add any metadata before calling close on the<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * Writer (Use the appendMetadata convenience methods). On close, a StoreFile<a name="line.57"></a>
+<span class="sourceLineNo">058</span> * is sitting in the Filesystem.  To refer to it, create a StoreFile instance<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * passing filesystem and path.  To read, call {@link #initReader()}<a name="line.59"></a>
+<span class="sourceLineNo">060</span> * &lt;p&gt;StoreFiles may also reference store files in another Store.<a name="line.60"></a>
+<span class="sourceLineNo">061</span> *<a name="line.61"></a>
+<span class="sourceLineNo">062</span> * The reason for this weird pattern where you use a different instance for the<a name="line.62"></a>
+<span class="sourceLineNo">063</span> * writer and a reader is that we write once but read a lot more.<a name="line.63"></a>
+<span class="sourceLineNo">064</span> */<a name="line.64"></a>
+<span class="sourceLineNo">065</span>@InterfaceAudience.Private<a name="line.65"></a>
+<span class="sourceLineNo">066</span>public class HStoreFile implements StoreFile, StoreFileReader.Listener {<a name="line.66"></a>
 <span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  // Keys for fileinfo values in HFile<a name="line.68"></a>
+<span class="sourceLineNo">068</span>  private static final Logger LOG = LoggerFactory.getLogger(HStoreFile.class.getName());<a name="line.68"></a>
 <span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>  /** Max Sequence ID in FileInfo */<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  public static final byte[] MAX_SEQ_ID_KEY = Bytes.toBytes("MAX_SEQ_ID_KEY");<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  /** Major compaction flag in FileInfo */<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  public static final byte[] MAJOR_COMPACTION_KEY = Bytes.toBytes("MAJOR_COMPACTION_KEY");<a name="line.74"></a>
+<span class="sourceLineNo">070</span>  public static final String STORE_FILE_READER_NO_READAHEAD = "hbase.store.reader.no-readahead";<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private static final boolean DEFAULT_STORE_FILE_READER_NO_READAHEAD = false;<a name="line.72"></a>
+<span class="sourceLineNo">073</span><a name="line.73"></a>
+<span class="sourceLineNo">074</span>  // Keys for fileinfo values in HFile<a name="line.74"></a>
 <span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  /** Minor compaction flag in FileInfo */<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  public static final byte[] EXCLUDE_FROM_MINOR_COMPACTION_KEY =<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      Bytes.toBytes("EXCLUDE_FROM_MINOR_COMPACTION");<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  /** Bloom filter Type in FileInfo */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public static final byte[] BLOOM_FILTER_TYPE_KEY = Bytes.toBytes("BLOOM_FILTER_TYPE");<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  /** Delete Family Count in FileInfo */<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  public static final byte[] DELETE_FAMILY_COUNT = Bytes.toBytes("DELETE_FAMILY_COUNT");<a name="line.84"></a>
+<span class="sourceLineNo">076</span>  /** Max Sequence ID in FileInfo */<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  public static final byte[] MAX_SEQ_ID_KEY = Bytes.toBytes("MAX_SEQ_ID_KEY");<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>  /** Major compaction flag in FileInfo */<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  public static final byte[] MAJOR_COMPACTION_KEY = Bytes.toBytes("MAJOR_COMPACTION_KEY");<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  /** Minor compaction flag in FileInfo */<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  public static final byte[] EXCLUDE_FROM_MINOR_COMPACTION_KEY =<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      Bytes.toBytes("EXCLUDE_FROM_MINOR_COMPACTION");<a name="line.84"></a>
 <span class="sourceLineNo">085</span><a name="line.85"></a>
-<span class="sourceLineNo">086</span>  /** Last Bloom filter key in FileInfo */<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  public static final byte[] LAST_BLOOM_KEY = Bytes.toBytes("LAST_BLOOM_KEY");<a name="line.87"></a>
+<span class="sourceLineNo">086</span>  /** Bloom filter Type in FileInfo */<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  public static final byte[] BLOOM_FILTER_TYPE_KEY = Bytes.toBytes("BLOOM_FILTER_TYPE");<a name="line.87"></a>
 <span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  /** Key for Timerange information in metadata */<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  public static final byte[] TIMERANGE_KEY = Bytes.toBytes("TIMERANGE");<a name="line.90"></a>
+<span class="sourceLineNo">089</span>  /** Delete Family Count in FileInfo */<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  public static final byte[] DELETE_FAMILY_COUNT = Bytes.toBytes("DELETE_FAMILY_COUNT");<a name="line.90"></a>
 <span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>  /** Key for timestamp of earliest-put in metadata */<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  public static final byte[] EARLIEST_PUT_TS = Bytes.toBytes("EARLIEST_PUT_TS");<a name="line.93"></a>
+<span class="sourceLineNo">092</span>  /** Last Bloom filter key in FileInfo */<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  public static final byte[] LAST_BLOOM_KEY = Bytes.toBytes("LAST_BLOOM_KEY");<a name="line.93"></a>
 <span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  /** Key for the number of mob cells in metadata */<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public static final byte[] MOB_CELLS_COUNT = Bytes.toBytes("MOB_CELLS_COUNT");<a name="line.96"></a>
+<span class="sourceLineNo">095</span>  /** Key for Timerange information in metadata */<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  public static final byte[] TIMERANGE_KEY = Bytes.toBytes("TIMERANGE");<a name="line.96"></a>
 <span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span>  /** Meta key set when store file is a result of a bulk load */<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  public static final byte[] BULKLOAD_TASK_KEY = Bytes.toBytes("BULKLOAD_SOURCE_TASK");<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  public static final byte[] BULKLOAD_TIME_KEY = Bytes.toBytes("BULKLOAD_TIMESTAMP");<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>   * Key for skipping resetting sequence id in metadata. For bulk loaded hfiles, the scanner resets<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * the cell seqId with the latest one, if this metadata is set as true, the reset is skipped.<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static final byte[] SKIP_RESET_SEQ_ID = Bytes.toBytes("SKIP_RESET_SEQ_ID");<a name="line.106"></a>
+<span class="sourceLineNo">098</span>  /** Key for timestamp of earliest-put in metadata */<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  public static final byte[] EARLIEST_PUT_TS = Bytes.toBytes("EARLIEST_PUT_TS");<a name="line.99"></a>
+<span class="sourceLineNo">100</span><a name="line.100"></a>
+<span class="sourceLineNo">101</span>  /** Key for the number of mob cells in metadata */<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  public static final byte[] MOB_CELLS_COUNT = Bytes.toBytes("MOB_CELLS_COUNT");<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>  /** Meta key set when store file is a result of a bulk load */<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  public static final byte[] BULKLOAD_TASK_KEY = Bytes.toBytes("BULKLOAD_SOURCE_TASK");<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  public static final byte[] BULKLOAD_TIME_KEY = Bytes.toBytes("BULKLOAD_TIMESTAMP");<a name="line.106"></a>
 <span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>  private final StoreFileInfo fileInfo;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>  private final FileSystem fs;<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>  // Block cache configuration and reference.<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  private final CacheConfig cacheConf;<a name="line.112"></a>
+<span class="sourceLineNo">108</span>  /**<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   * Key for skipping resetting sequence id in metadata. For bulk loaded hfiles, the scanner resets<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   * the cell seqId with the latest one, if this metadata is set as true, the reset is skipped.<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   */<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  public static final byte[] SKIP_RESET_SEQ_ID = Bytes.toBytes("SKIP_RESET_SEQ_ID");<a name="line.112"></a>
 <span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  // Counter that is incremented every time a scanner is created on the<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  // store file. It is decremented when the scan on the store file is<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  // done.<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  private final AtomicInteger refCount = new AtomicInteger(0);<a name="line.117"></a>
-<span class="sourceLineNo">118</span><a name="line.118"></a>
-<span class="sourceLineNo">119</span>  private final boolean noReadahead;<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  private final boolean primaryReplica;<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  // Indicates if the file got compacted<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  private volatile boolean compactedAway = false;<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  // Keys for metadata stored in backing HFile.<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  // Set when we obtain a Reader.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  private long sequenceid = -1;<a name="line.128"></a>
+<span class="sourceLineNo">114</span>  private final StoreFileInfo fileInfo;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private final FileSystem fs;<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>  // Block cache configuration and reference.<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  private final CacheConfig cacheConf;<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  // Counter that is incremented every time a scanner is created on the<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  // store file. It is decremented when the scan on the store file is<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  // done.<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  private final AtomicInteger refCount = new AtomicInteger(0);<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span>  // Set implementation must be of concurrent type<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  private final Set&lt;StoreFileReader&gt; streamReaders;<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private final boolean noReadahead;<a name="line.128"></a>
 <span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  // max of the MemstoreTS in the KV's in this store<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  // Set when we obtain a Reader.<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  private long maxMemstoreTS = -1;<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>  // firstKey, lastkey and cellComparator will be set when openReader.<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  private Optional&lt;Cell&gt; firstKey;<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private Optional&lt;Cell&gt; lastKey;<a name="line.137"></a>
+<span class="sourceLineNo">130</span>  private final boolean primaryReplica;<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>  // Indicates if the file got compacted<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  private volatile boolean compactedAway = false;<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>  // Keys for metadata stored in backing HFile.<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  // Set when we obtain a Reader.<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  private long sequenceid = -1;<a name="line.137"></a>
 <span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private CellComparator comparator;<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  public CacheConfig getCacheConf() {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    return cacheConf;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>  @Override<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  public Optional&lt;Cell&gt; getFirstKey() {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    return firstKey;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
+<span class="sourceLineNo">139</span>  // max of the MemstoreTS in the KV's in this store<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  // Set when we obtain a Reader.<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  private long maxMemstoreTS = -1;<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  // firstKey, lastkey and cellComparator will be set when openReader.<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  private Optional&lt;Cell&gt; firstKey;<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  private Optional&lt;Cell&gt; lastKey;<a name="line.146"></a>
+<span class="sourceLineNo">147</span><a name="line.147"></a>
+<span class="sourceLineNo">148</span>  private CellComparator comparator;<a name="line.148"></a>
 <span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  @Override<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  public Optional&lt;Cell&gt; getLastKey() {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    return lastKey;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  }<a name="line.153"></a>
-<span class="sourceLineNo">154</span><a name="line.154"></a>
-<span class="sourceLineNo">155</span>  @Override<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  public CellComparator getComparator() {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    return comparator;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>  @Override<a name="line.160"></a>
-<span class="sourceLineNo">161</span>  public long getMaxMemStoreTS() {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    return maxMemstoreTS;<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>  // If true, this file was product of a major compaction.  Its then set<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  // whenever you get a Reader.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  private AtomicBoolean majorCompaction = null;<a name="line.167"></a>
+<span class="sourceLineNo">150</span>  public CacheConfig getCacheConf() {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    return cacheConf;<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>  @Override<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  public Optional&lt;Cell&gt; getFirstKey() {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    return firstKey;<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>  public Optional&lt;Cell&gt; getLastKey() {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    return lastKey;<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>  public CellComparator getComparator() {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    return comparator;<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>  // If true, this file should not be included in minor compactions.<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  // It's set whenever you get a Reader.<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  private boolean excludeFromMinorCompaction = false;<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  /**<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * Map of the metadata entries in the corresponding HFile. Populated when Reader is opened<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * after which it is not modified again.<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   */<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  private Map&lt;byte[], byte[]&gt; metadataMap;<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>  // StoreFile.Reader<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  private volatile StoreFileReader reader;<a name="line.180"></a>
+<span class="sourceLineNo">169</span>  @Override<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  public long getMaxMemStoreTS() {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    return maxMemstoreTS;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>  }<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>  // If true, this file was product of a major compaction.  Its then set<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  // whenever you get a Reader.<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  private AtomicBoolean majorCompaction = null;<a name="line.176"></a>
+<span class="sourceLineNo">177</span><a name="line.177"></a>
+<span class="sourceLineNo">178</span>  // If true, this file should not be included in minor compactions.<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  // It's set whenever you get a Reader.<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  private boolean excludeFromMinorCompaction = false;<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>   * Bloom filter type specified in column family configuration. Does not<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * necessarily correspond to the Bloom filter type present in the HFile.<a name="line.184"></a>
+<span class="sourceLineNo">183</span>   * Map of the metadata entries in the corresponding HFile. Populated when Reader is opened<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * after which it is not modified again.<a name="line.184"></a>
 <span class="sourceLineNo">185</span>   */<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  private final BloomType cfBloomType;<a name="line.186"></a>
+<span class="sourceLineNo">186</span>  private Map&lt;byte[], byte[]&gt; metadataMap;<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>   * Constructor, loads a reader and it's indices, etc. May allocate a substantial amount of ram<a name="line.189"></a>
-<span class="sourceLineNo">190</span>   * depending on the underlying files (10-20MB?).<a name="line.190"></a>
-<span class="sourceLineNo">191</span>   * @param fs The current file system to use.<a name="line.191"></a>
-<span class="sourceLineNo">192</span>   * @param p The path of the file.<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * @param conf The current configuration.<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * @param cacheConf The cache configuration and block cache reference.<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * @param cfBloomType The bloom type to use for this store file as specified by column family<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   *          configuration. This may or may not be the same as the Bloom filter type actually<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   *          present in the HFile, because column family configuration might change. If this is<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   *          {@link BloomType#NONE}, the existing Bloom filter is ignored.<a name="line.198"></a>
-<span class="sourceLineNo">199</span>   * @param primaryReplica true if this is a store file for primary replica, otherwise false.<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   * @throws IOException<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   */<a name="line.201"></a>
-<span class="sourceLineNo">202</span>  public HStoreFile(FileSystem fs, Path p, Configuration conf, CacheConfig cacheConf,<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      BloomType cfBloomType, boolean primaryReplica) throws IOException {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    this(fs, new StoreFileInfo(conf, fs, p), conf, cacheConf, cfBloomType, primaryReplica);<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>   * Constructor, loads a reader and it's indices, etc. May allocate a substantial amount of ram<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   * depending on the underlying files (10-20MB?).<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   * @param fs fs The current file system to use.<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   * @param fileInfo The store file information.<a name="line.211"></a>
-<span class="sourceLineNo">212</span>   * @param conf The current configuration.<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * @param cacheConf The cache configuration and block cache reference.<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   * @param cfBloomType The bloom type to use for this store file as specified by column<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   *          family configuration. This may or may not be the same as the Bloom filter type<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   *          actually present in the HFile, because column family configuration might change. If<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   *          this is {@link BloomType#NONE}, the existing Bloom filter is ignored.<a name="line.217"></a>
-<span class="sourceLineNo">218</span>   * @param primaryReplica true if this is a store file for primary replica, otherwise false.<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   */<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  public HStoreFile(FileSystem fs, StoreFileInfo fileInfo, Configuration conf, CacheConfig cacheConf,<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      BloomType cfBloomType, boolean primaryReplica) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    this.fs = fs;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    this.fileInfo = fileInfo;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    this.cacheConf = cacheConf;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    this.noReadahead =<a name="line.225"></a>
-<span class="sourceLineNo">226</span>        conf.getBoolean(STORE_FILE_READER_NO_READAHEAD, DEFAULT_STORE_FILE_READER_NO_READAHEAD);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    if (BloomFilterFactory.isGeneralBloomEnabled(conf)) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      this.cfBloomType = cfBloomType;<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    } else {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      LOG.info("Ignoring bloom filter check for file " + this.getPath() + ": " + "cfBloomType=" +<a name="line.230"></a>
-<span class="sourceLineNo">231</span>          cfBloomType + " (disabled in config)");<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      this.cfBloomType = BloomType.NONE;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    this.primaryReplica = primaryReplica;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  }<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>  /**<a name="line.237"></a>
-<span class="sourceLineNo">238</span>   * @return the StoreFile object associated to this StoreFile. null if the StoreFile is not a<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   *         reference.<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   */<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  public StoreFileInfo getFileInfo() {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    return this.fileInfo;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  }<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>  @Override<a name="line.245"></a>
-<span class="sourceLineNo">246</span>  public Path getPath() {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    return this.fileInfo.getPath();<a name="line.247"></a>
-<span class="sourceLineNo">248</span>  }<a name="line.248"></a>
-<span class="sourceLineNo">249</span><a name="line.249"></a>
-<span class="sourceLineNo">250</span>  @Override<a name="line.250"></a>
-<span class="sourceLineNo">251</span>  public Path getQualifiedPath() {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    return this.fileInfo.getPath().makeQualified(fs.getUri(), fs.getWorkingDirectory());<a name="line.252"></a>
+<span class="sourceLineNo">188</span>  // StoreFile.Reader<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  private volatile StoreFileReader reader;<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>   * Bloom filter type specified in column family configuration. Does not<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * necessarily correspond to the Bloom filter type present in the HFile.<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   */<a name="line.194"></a>
+<span class="sourceLineNo">195</span>  private final BloomType cfBloomType;<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>   * Constructor, loads a reader and it's indices, etc. May allocate a substantial amount of ram<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * depending on the underlying files (10-20MB?).<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * @param fs The current file system to use.<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   * @param p The path of the file.<a name="line.201"></a>
+<span class="sourceLineNo">202</span>   * @param conf The current configuration.<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   * @param cacheConf The cache configuration and block cache reference.<a name="line.203"></a>
+<span class="sourceLineNo">204</span>   * @param cfBloomType The bloom type to use for this store file as specified by column family<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   *          configuration. This may or may not be the same as the Bloom filter type actually<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   *          present in the HFile, because column family configuration might change. If this is<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   *          {@link BloomType#NONE}, the existing Bloom filter is ignored.<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   * @param primaryReplica true if this is a store file for primary replica, otherwise false.<a name="line.208"></a>
+<span class="sourceLineNo">209</span>   * @throws IOException<a name="line.209"></a>
+<span class="sourceLineNo">210</span>   */<a name="line.210"></a>
+<span class="sourceLineNo">211</span>  public HStoreFile(FileSystem fs, Path p, Configuration conf, CacheConfig cacheConf,<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      BloomType cfBloomType, boolean primaryReplica) throws IOException {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    this(fs, new StoreFileInfo(conf, fs, p), conf, cacheConf, cfBloomType, primaryReplica);<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>   * Constructor, loads a reader and it's indices, etc. May allocate a substantial amount of ram<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * depending on the underlying files (10-20MB?).<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   * @param fs fs The current file system to use.<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   * @param fileInfo The store file information.<a name="line.220"></a>
+<span class="sourceLineNo">221</span>   * @param conf The current configuration.<a name="line.221"></a>
+<span class="sourceLineNo">222</span>   * @param cacheConf The cache configuration and block cache reference.<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   * @param cfBloomType The bloom type to use for this store file as specified by column<a name="line.223"></a>
+<span class="sourceLineNo">224</span>   *          family configuration. This may or may not be the same as the Bloom filter type<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   *          actually present in the HFile, because column family configuration might change. If<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   *          this is {@link BloomType#NONE}, the existing Bloom filter is ignored.<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   * @param primaryReplica true if this is a store file for primary replica, otherwise false.<a name="line.227"></a>
+<span class="sourceLineNo">228</span>   */<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  public HStoreFile(FileSystem fs, StoreFileInfo fileInfo, Configuration conf, CacheConfig cacheConf,<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      BloomType cfBloomType, boolean primaryReplica) {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    this.streamReaders = ConcurrentHashMap.newKeySet();<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    this.fs = fs;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    this.fileInfo = fileInfo;<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    this.cacheConf = cacheConf;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    this.noReadahead =<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        conf.getBoolean(STORE_FILE_READER_NO_READAHEAD, DEFAULT_STORE_FILE_READER_NO_READAHEAD);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    if (BloomFilterFactory.isGeneralBloomEnabled(conf)) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      this.cfBloomType = cfBloomType;<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    } else {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      LOG.info("Ignoring bloom filter check for file " + this.getPath() + ": " + "cfBloomType=" +<a name="line.240"></a>
+<span class="sourceLineNo">241</span>          cfBloomType + " (disabled in config)");<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      this.cfBloomType = BloomType.NONE;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    }<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    this.primaryReplica = primaryReplica;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  }<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>  /**<a name="line.247"></a>
+<span class="sourceLineNo">248</span>   * @return the StoreFile object associated to this StoreFile. null if the StoreFile is not a<a name="line.248"></a>
+<span class="sourceLineNo">249</span>   *         reference.<a name="line.249"></a>
+<span class="sourceLineNo">250</span>   */<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  public StoreFileInfo getFileInfo() {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    return this.fileInfo;<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>  @Override<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  public boolean isReference() {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    return this.fileInfo.isReference();<a name="line.257"></a>
+<span class="sourceLineNo">256</span>  public Path getPath() {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    return this.fileInfo.getPath();<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>  @Override<a name="line.260"></a>
-<span class="sourceLineNo">261</span>  public boolean isHFile() {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    return StoreFileInfo.isHFile(this.fileInfo.getPath());<a name="line.262"></a>
+<span class="sourceLineNo">261</span>  public Path getQualifiedPath() {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    return this.fileInfo.getPath().makeQualified(fs.getUri(), fs.getWorkingDirectory());<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>  @Override<a name="line.265"></a>
-<span class="sourceLineNo">266</span>  public boolean isMajorCompactionResult() {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    if (this.majorCompaction == null) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      throw new NullPointerException("This has not been set yet");<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    return this.majorCompaction.get();<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  }<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>  @Override<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  public boolean excludeFromMinorCompaction() {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    return this.excludeFromMinorCompaction;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  }<a name="line.276"></a>
-<span class="sourceLineNo">277</span><a name="line.277"></a>
-<span class="sourceLineNo">278</span>  @Override<a name="line.278"></a>
-<span class="sourceLineNo">279</span>  public long getMaxSequenceId() {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    return this.sequenceid;<a name="line.280"></a>
+<span class="sourceLineNo">266</span>  public boolean isReference() {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    return this.fileInfo.isReference();<a name="line.267"></a>
+<span class="sourceLineNo">268</span>  }<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>  @Override<a name="line.270"></a>
+<span class="sourceLineNo">271</span>  public boolean isHFile() {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    return StoreFileInfo.isHFile(this.fileInfo.getPath());<a name="line.272"></a>
+<span class="sourceLineNo">273</span>  }<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span>  @Override<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public boolean isMajorCompactionResult() {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    if (this.majorCompaction == null) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      throw new NullPointerException("This has not been set yet");<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    }<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    return this.majorCompaction.get();<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>  @Override<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  public long getModificationTimeStamp() throws IOException {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    return getModificationTimestamp();<a name="line.285"></a>
+<span class="sourceLineNo">284</span>  public boolean excludeFromMinorCompaction() {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    return this.excludeFromMinorCompaction;<a name="line.285"></a>
 <span class="sourceLineNo">286</span>  }<a name="line.286"></a>
 <span class="sourceLineNo">287</span><a name="line.287"></a>
 <span class="sourceLineNo">288</span>  @Override<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  public long getModificationTimestamp() throws IOException {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    return fileInfo.getModificationTime();<a name="line.290"></a>
+<span class="sourceLineNo">289</span>  public long getMaxSequenceId() {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    return this.sequenceid;<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>   * Only used by the Striped Compaction Policy<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @param key<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * @return value associated with the metadata key<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   */<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  public byte[] getMetadataValue(byte[] key) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    return metadataMap.get(key);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  }<a name="line.300"></a>
-<span class="sourceLineNo">301</span><a name="line.301"></a>
-<span class="sourceLineNo">302</span>  @Override<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  public boolean isBulkLoadResult() {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    boolean bulkLoadedHFile = false;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    String fileName = this.getPath().getName();<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    int startPos = fileName.indexOf("SeqId_");<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    if (startPos != -1) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      bulkLoadedHFile = true;<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    }<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    return bulkLoadedHFile || (metadataMap != null &amp;&amp; metadataMap.containsKey(BULKLOAD_TIME_KEY));<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  }<a name="line.311"></a>
-<span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>  public boolean isCompactedAway() {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    return compactedAway;<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>  @VisibleForTesting<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public int getRefCount() {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    return refCount.get();<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>  /**<a name="line.322"></a>
-<span class="sourceLineNo">323</span>   * @return true if the file is still used in reads<a name="line.323"></a>
-<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public boolean isReferencedInReads() {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    int rc = refCount.get();<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    assert rc &gt;= 0; // we should not go negative.<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    return rc &gt; 0;<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  }<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  @Override<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public OptionalLong getBulkLoadTimestamp() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    byte[] bulkLoadTimestamp = metadataMap.get(BULKLOAD_TIME_KEY);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    return bulkLoadTimestamp == null ? OptionalLong.empty()<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        : OptionalLong.of(Bytes.toLong(bulkLoadTimestamp));<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  }<a name="line.336"></a>
-<span class="sourceLineNo">337</span><a name="line.337"></a>
-<span class="sourceLineNo">338</span>  /**<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   * @return the cached value of HDFS blocks distribution. The cached value is calculated when store<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   *         file is opened.<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   */<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public HDFSBlocksDistribution getHDFSBlockDistribution() {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    return this.fileInfo.getHDFSBlockDistribution();<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  }<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  /**<a name="line.346"></a>
-<span class="sourceLineNo">347</span>   * Opens reader on this store file. Called by Constructor.<a name="line.347"></a>
-<span class="sourceLineNo">348</span>   * @throws IOException<a name="line.348"></a>
-<span class="sourceLineNo">349</span>   * @see #closeStoreFile(boolean)<a name="line.349"></a>
-<span class="sourceLineNo">350</span>   */<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  private void open() throws IOException {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    if (this.reader != null) {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      throw new IllegalAccessError("Already open");<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    }<a name="line.354"></a>
+<span class="sourceLineNo">293</span>  @Override<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  public long getModificationTimeStamp() throws IOException {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    return getModificationTimestamp();<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  }<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>  @Override<a name="line.298"></a>
+<span class="sourceLineNo">299</span>  public long getModificationTimestamp() throws IOException {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    return fileInfo.getModificationTime();<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>   * Only used by the Striped Compaction Policy<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * @param key<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   * @return value associated with the metadata key<a name="line.306"></a>
+<span class="sourceLineNo">307</span>   */<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  public byte[] getMetadataValue(byte[] key) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    return metadataMap.get(key);<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>  @Override<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  public boolean isBulkLoadResult() {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    boolean bulkLoadedHFile = false;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    String fileName = this.getPath().getName();<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    int startPos = fileName.indexOf("SeqId_");<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    if (startPos != -1) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      bulkLoadedHFile = true;<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    return bulkLoadedHFile || (metadataMap != null &amp;&amp; metadataMap.containsKey(BULKLOAD_TIME_KEY));<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public boolean isCompactedAway() {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    return compactedAway;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>  @VisibleForTesting<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  public int getRefCount() {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    return refCount.get();<a name="line.329"></a>
+<span class="sourceLineNo">330</span>  }<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>   * @return true if the file is still used in reads<a name="line.333"></a>
+<span class="sourceLineNo">334</span>   */<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  public boolean isReferencedInReads() {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    int rc = refCount.get();<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    assert rc &gt;= 0; // we should not go negative.<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    return rc &gt; 0;<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>  @Override<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  public OptionalLong getBulkLoadTimestamp() {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    byte[] bulkLoadTimestamp = metadataMap.get(BULKLOAD_TIME_KEY);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    return bulkLoadTimestamp == null ? OptionalLong.empty()<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        : OptionalLong.of(Bytes.toLong(bulkLoadTimestamp));<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>  /**<a name="line.348"></a>
+<span class="sourceLineNo">349</span>   * @return the cached value of HDFS blocks distribution. The cached value is calculated when store<a name="line.349"></a>
+<span class="sourceLineNo">350</span>   *         file is opened.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   */<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  public HDFSBlocksDistribution getHDFSBlockDistribution() {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    return this.fileInfo.getHDFSBlockDistribution();<a name="line.353"></a>
+<span class="sourceLineNo">354</span>  }<a name="line.354"></a>
 <span class="sourceLineNo">355</span><a name="line.355"></a>
-<span class="sourceLineNo">356</span>    // Open the StoreFile.Reader<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    this.reader = fileInfo.open(this.fs, this.cacheConf, false, noReadahead ? 0L : -1L,<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      primaryReplica, refCount, true);<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>    // Load up indices and fileinfo. This also loads Bloom filter type.<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    metadataMap = Collections.unmodifiableMap(this.reader.loadFileInfo());<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>    // Read in our metadata.<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    byte [] b = metadataMap.get(MAX_SEQ_ID_KEY);<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    if (b != null) {<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      // By convention, if halfhfile, top half has a sequence number &gt; bottom<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      // half. Thats why we add one in below. Its done for case the two halves<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      // are ever merged back together --rare.  Without it, on open of store,<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      // since store files are distinguished by sequence id, the one half would<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      // subsume the other.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      this.sequenceid = Bytes.toLong(b);<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      if (fileInfo.isTopReference()) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>        this.sequenceid += 1;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      }<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    }<a name="line.375"></a>
-<span class="sourceLineNo">376</span><a name="line.376"></a>
-<span class="sourceLineNo">377</span>    if (isBulkLoadResult()){<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      // generate the sequenceId from the fileName<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      // fileName is of the form &lt;randomName&gt;_SeqId_&lt;id-when-loaded&gt;_<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      String fileName = this.getPath().getName();<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      // Use lastIndexOf() to get the last, most recent bulk load seqId.<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      int startPos = fileName.lastIndexOf("SeqId_");<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      if (startPos != -1) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        this.sequenceid = Long.parseLong(fileName.substring(startPos + 6,<a name="line.384"></a>
-<span class="sourceLineNo">385</span>            fileName.indexOf('_', startPos + 6)));<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        // Handle reference files as done above.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        if (fileInfo.isTopReference()) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>          this.sequenceid += 1;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>        }<a name="line.389"></a>
-<span class="sourceLineNo">390</span>      }<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      // SKIP_RESET_SEQ_ID only works in bulk loaded file.<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      // In mob compaction, the hfile where the cells contain the path of a new mob file is bulk<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      // loaded to hbase, these cells have the same seqIds with the old ones. We do not want<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      // to reset new seqIds for them since this might make a mess of the visibility of cells that<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      // have the same row key but different seqIds.<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      boolean skipResetSeqId = isSkipResetSeqId(metadataMap.get(SKIP_RESET_SEQ_ID));<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      if (skipResetSeqId) {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        // increase the seqId when it is a bulk loaded file from mob compaction.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        this.sequenceid += 1;<a name="line.399"></a>
+<span class="sourceLineNo">356</span>  /**<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * Opens reader on this store file. Called by Constructor.<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   * @throws IOException<a name="line.358"></a>
+<span class="sourceLineNo">359</span>   * @see #closeStoreFile(boolean)<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  private void open() throws IOException {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    if (this.reader != null) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      throw new IllegalAccessError("Already open");<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>    // Open the StoreFile.Reader<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    this.reader = fileInfo.open(this.fs, this.cacheConf, false, noReadahead ? 0L : -1L,<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      primaryReplica, refCount, true);<a name="line.368"></a>
+<span class="sourceLineNo">369</span><a name="line.369"></a>
+<span class="sourceLineNo">370</span>    // Load up indices and fileinfo. This also loads Bloom filter type.<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    metadataMap = Collections.unmodifiableMap(this.reader.loadFileInfo());<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>    // Read in our metadata.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    byte [] b = metadataMap.get(MAX_SEQ_ID_KEY);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    if (b != null) {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      // By convention, if halfhfile, top half has a sequence number &gt; bottom<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      // half. Thats why we add one in below. Its done for case the two halves<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      // are ever merged back together --rare.  Without it, on open of store,<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      // since store files are distinguished by sequence id, the one half would<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      // subsume the other.<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      this.sequenceid = Bytes.toLong(b);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      if (fileInfo.isTopReference()) {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        this.sequenceid += 1;<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><a name="line.386"></a>
+<span class="sourceLineNo">387</span>    if (isBulkLoadResult()){<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      // generate the sequenceId from the fileName<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      // fileName is of the form &lt;randomName&gt;_SeqId_&lt;id-when-loaded&gt;_<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      String fileName = this.getPath().getName();<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      // Use lastIndexOf() to get the last, most recent bulk load seqId.<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      int startPos = fileName.lastIndexOf("SeqId_");<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      if (startPos != -1) {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        this.sequenceid = Long.parseLong(fileName.substring(startPos + 6,<a name="line.394"></a>
+<span class="sourceLineNo">395</span>            fileName.indexOf('_', startPos + 6)));<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        // Handle reference files as done above.<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        if (fileInfo.isTopReference()) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>          this.sequenceid += 1;<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>      this.reader.setSkipResetSeqId(skipResetSeqId);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      this.reader.setBulkLoaded(true);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    this.reader.setSequenceID(this.sequenceid);<a name="line.404"></a>
-<span class="sourceLineNo">405</span><a name="line.405"></a>
-<span class="sourceLineNo">406</span>    b = metadataMap.get(HFile.Writer.MAX_MEMSTORE_TS_KEY);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    if (b != null) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      this.maxMemstoreTS = Bytes.toLong(b);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    }<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>    b = metadataMap.get(MAJOR_COMPACTION_KEY);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    if (b != null) {<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      boolean mc = Bytes.toBoolean(b);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      if (this.majorCompaction == null) {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        this.majorCompaction = new AtomicBoolean(mc);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      } else {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>        this.majorCompaction.set(mc);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      }<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    } else {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      // Presume it is not major compacted if it doesn't explicity say so<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      // HFileOutputFormat explicitly sets the major compacted key.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      this.majorCompaction = new AtomicBoolean(false);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    }<a name="line.423"></a>
-<span class="sourceLineNo">424</span><a name="line.424"></a>
-<span class="sourceLineNo">425</span>    b = metadataMap.get(EXCLUDE_FROM_MINOR_COMPACTION_KEY);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    this.excludeFromMinorCompaction = (b != null &amp;&amp; Bytes.toBoolean(b));<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>    BloomType hfileBloomType = reader.getBloomFilterType();<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    if (cfBloomType != BloomType.NONE) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      reader.loadBloomfilter(BlockType.GENERAL_BLOOM_META);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      if (hfileBloomType != cfBloomType) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        LOG.info("HFile Bloom filter type for "<a name="line.432"></a>
-<span class="sourceLineNo">433</span>            + reader.getHFileReader().getName() + ": " + hfileBloomType<a name="line.433"></a>
-<span class="sourceLineNo">434</span>            + ", but " + cfBloomType + " specified in column family "<a name="line.434"></a>
-<span class="sourceLineNo">435</span>            + "configuration");<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      }<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    } else if (hfileBloomType != BloomType.NONE) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      LOG.info("Bloom filter turned off by CF config for "<a name="line.438"></a>
-<span class="sourceLineNo">439</span>          + reader.getHFileReader().getName());<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>    // load delete family bloom filter<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    reader.loadBloomfilter(BlockType.DELETE_FAMILY_BLOOM_META);<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>    try {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      byte[] data = metadataMap.get(TIMERANGE_KEY);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      this.reader.timeRange = data == null ? null : TimeRangeTracker.parseFrom(data).toTimeRange();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    } catch (IllegalArgumentException e) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>      LOG.error("Error reading timestamp range data from meta -- " +<a name="line.449"></a>
-<span class="sourceLineNo">450</span>          "proceeding without", e);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      this.reader.timeRange = null;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    // initialize so we can reuse them after reader closed.<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    firstKey = reader.getFirstKey();<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    lastKey = reader.getLastKey();<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    comparator = reader.getComparator();<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  }<a name="line.457"></a>
-<span class="sourceLineNo">458</span><a name="line.458"></a>
-<span class="sourceLineNo">459</span>  /**<a name="line.459"></a>
-<span class="sourceLineNo">460</span>   * Initialize the reader used for pread.<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
-<span class="sourceLineNo">462</span>  public void initReader() throws IOException {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    if (reader == null) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      try {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>        open();<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      } catch (Exception e) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>        try {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>          boolean evictOnClose = cacheConf != null ? cacheConf.shouldEvictOnClose() : true;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>          this.closeStoreFile(evictOnClose);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>        } catch (IOException ee) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>          LOG.warn("failed to close reader", ee);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>        }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        throw e;<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>  }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>  private StoreFileReader createStreamReader(boolean canUseDropBehind) throws IOException {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    initReader();<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    StoreFileReader reader = fileInfo.open(this.fs, this.cacheConf, canUseDropBehind, -1L,<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      primaryReplica, refCount, false);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    reader.copyFields(this.reader);<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    return reader;<a name="line.483"></a>
-<span class="sourceLineNo">484</span>  }<a name="line.484"></a>
-<span class="sourceLineNo">485</span><a name="line.485"></a>
-<span class="sourceLineNo">486</span>  /**<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * Get a scanner which uses pread.<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * &lt;p&gt;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   * Must be called after initReader.<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   */<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  public StoreFileScanner getPreadScanner(boolean cacheBlocks, long readPt, long scannerOrder,<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      boolean canOptimizeForNonNullColumn) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    return getReader().getStoreFileScanner(cacheBlocks, true, false, readPt, scannerOrder,<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      canOptimizeForNonNullColumn);<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>   * Get a scanner which uses streaming read.<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * &lt;p&gt;<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   * Must be called after initReader.<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   */<a name="line.501"></a>
-<span class="sourceLineNo">502</span>  public StoreFileScanner getStreamScanner(boolean canUseDropBehind, boolean cacheBlocks,<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      boolean isCompaction, long readPt, long scannerOrder, boolean canOptimizeForNonNullColumn)<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      throws IOException {<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    return createStreamReader(canUseDropBehind).getStoreFileScanner(cacheBlocks, false,<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      isCompaction, readPt, scannerOrder, canOptimizeForNonNullColumn);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  }<a name="line.507"></a>
-<span class="sourceLineNo">508</span><a name="line.508"></a>
-<span class="sourceLineNo">509</span>  /**<a name="line.509"></a>
-<span class="sourceLineNo">510</span>   * @return Current reader. Must call initReader first else returns null.<a name="line.510"></a>
-<span class="sourceLineNo">511</span>   * @see #initReader()<a name="line.511"></a>
-<span class="sourceLineNo">512</span>   */<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  public StoreFileReader getReader() {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    return this.reader;<a name="line.514"></a>
-<span class="sourceLineNo">515</span>  }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  /**<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * @param evictOnClose whether to evict blocks belonging to this file<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * @throws IOException<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   */<a name="line.520"></a>
-<span class="sourceLineNo">521</span>  public synchronized void closeStoreFile(boolean evictOnClose) throws IOException {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    if (this.reader != null) {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      this.reader.close(evictOnClose);<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      this.reader = null;<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>  }<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span>  /**<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * Delete this file<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * @throws IOException<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   */<a name="line.531"></a>
-<span class="sourceLineNo">532</span>  public void deleteStoreFile() throws IOException {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    boolean evictOnClose = cacheConf != null ? cacheConf.shouldEvictOnClose() : true;<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    closeStoreFile(evictOnClose);<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    this.fs.delete(getPath(), true);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>  public void markCompactedAway() {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    this.compactedAway = true;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>  }<a name="line.540"></a>
-<span class="sourceLineNo">541</span><a name="line.541"></a>
-<span class="sourceLineNo">542</span>  @Override<a name="line.542"></a>
-<span class="sourceLineNo">543</span>  public String toString() {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    return this.fileInfo.toString();<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>  @Override<a name="line.547"></a>
-<span class="sourceLineNo">548</span>  public String toStringDetailed() {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    StringBuilder sb = new StringBuilder();<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    sb.append(this.getPath().toString());<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    sb.append(", isReference=").append(isReference());<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    sb.append(", isBulkLoadResult=").append(isBulkLoadResult());<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    if (isBulkLoadResult()) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      sb.append(", bulkLoadTS=");<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      OptionalLong bulkLoadTS = getBulkLoadTimestamp();<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      if (bulkLoadTS.isPresent()) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>        sb.append(bulkLoadTS.getAsLong());<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      } else {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        sb.append("NotPresent");<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      }<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    } else {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      sb.append(", seqid=").append(getMaxSequenceId());<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    }<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    sb.append(", majorCompaction=").append(isMajorCompactionResult());<a name="line.564"></a>
+<span class="sourceLineNo">401</span>      // SKIP_RESET_SEQ_ID only works in bulk loaded file.<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      // In mob compaction, the hfile where the cells contain the path of a new mob file is bulk<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      // loaded to hbase, these cells have the same seqIds with the old ones. We do not want<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      // to reset new seqIds for them since this might make a mess of the visibility of cells that<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      // have the same row key but different seqIds.<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      boolean skipResetSeqId = isSkipResetSeqId(metadataMap.get(SKIP_RESET_SEQ_ID));<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      if (skipResetSeqId) {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        // increase the seqId when it is a bulk loaded file from mob compaction.<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        this.sequenceid += 1;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>      }<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      this.reader.setSkipResetSeqId(skipResetSeqId);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>      this.reader.setBulkLoaded(true);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    }<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    this.reader.setSequenceID(this.sequenceid);<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>    b = metadataMap.get(HFile.Writer.MAX_MEMSTORE_TS_KEY);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    if (b != null) {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      this.maxMemstoreTS = Bytes.toLong(b);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    }<a name="line.419"></a>
+<span class="sourceLineNo">420</span><a name="line.420"></a>
+<span class="sourceLineNo">421</span>    b = metadataMap.get(MAJOR_COMPACTION_KEY);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    if (b != null) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      boolean mc = Bytes.toBoolean(b);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      if (this.majorCompaction == null) {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        this.majorCompaction = new AtomicBoolean(mc);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      } else {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        this.majorCompaction.set(mc);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    } else {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      // Presume it is not major compacted if it doesn't explicity say so<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      // HFileOutputFormat explicitly sets the major compacted key.<a name="line.431"></a>
+<span class="sourceLineNo

<TRUNCATED>

[30/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileReader.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileReader.html b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileReader.html
index b635526..e6791f6 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileReader.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFileReader.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":42,"i18":42,"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,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":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":42,"i18":42,"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,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/StoreFileReader.html" target="_top">Frames</a></li>
@@ -74,7 +74,7 @@ var activeTableTab = "activeTableTab";
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
 <li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
@@ -124,6 +124,25 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="summary">
 <ul class="blockList">
 <li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
+<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static interface&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
 <!-- =========== FIELD SUMMARY =========== -->
 <ul class="blockList">
 <li class="blockList"><a name="field.summary">
@@ -145,25 +164,33 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#bulkLoadResult">bulkLoadResult</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#closed">closed</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/util/BloomFilter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilter</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#deleteFamilyBloomFilter">deleteFamilyBloomFilter</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#deleteFamilyCnt">deleteFamilyCnt</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/util/BloomFilter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilter</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#generalBloomFilter">generalBloomFilter</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#lastBloomKey">lastBloomKey</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue.KeyOnlyKeyValue</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#lastBloomKeyOnlyKV">lastBloomKeyOnlyKV</a></span></code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#listener">listener</a></span></code>&nbsp;</td>
+</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private static org.slf4j.Logger</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#LOG">LOG</a></span></code>&nbsp;</td>
@@ -486,9 +513,13 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i45" class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setSequenceID-long-">setSequenceID</a></span>(long&nbsp;sequenceID)</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setListener-org.apache.hadoop.hbase.regionserver.StoreFileReader.Listener-">setListener</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a>&nbsp;listener)</code>&nbsp;</td>
 </tr>
 <tr id="i46" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setSequenceID-long-">setSequenceID</a></span>(long&nbsp;sequenceID)</code>&nbsp;</td>
+</tr>
+<tr id="i47" class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setSkipResetSeqId-boolean-">setSkipResetSeqId</a></span>(boolean&nbsp;skipResetSeqId)</code>&nbsp;</td>
 </tr>
@@ -634,12 +665,30 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <a name="shared">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>shared</h4>
 <pre>final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.86">shared</a></pre>
 </li>
 </ul>
+<a name="listener">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>listener</h4>
+<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.88">listener</a></pre>
+</li>
+</ul>
+<a name="closed">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>closed</h4>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.90">closed</a></pre>
+</li>
+</ul>
 </li>
 </ul>
 <!-- ========= CONSTRUCTOR DETAIL ======== -->
@@ -654,7 +703,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>StoreFileReader</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.88">StoreFileReader</a>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Reader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Reader</a>&nbsp;reader,
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.92">StoreFileReader</a>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Reader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Reader</a>&nbsp;reader,
                         <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a>&nbsp;refCount,
                         boolean&nbsp;shared)</pre>
 </li>
@@ -665,7 +714,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>StoreFileReader</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.95">StoreFileReader</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.99">StoreFileReader</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                        org.apache.hadoop.fs.Path&nbsp;path,
                        <a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a>&nbsp;cacheConf,
                        boolean&nbsp;primaryReplicaStoreFile,
@@ -685,7 +734,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>StoreFileReader</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.101">StoreFileReader</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.105">StoreFileReader</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                        org.apache.hadoop.fs.Path&nbsp;path,
                        <a href="../../../../../org/apache/hadoop/hbase/io/FSDataInputStreamWrapper.html" title="class in org.apache.hadoop.hbase.io">FSDataInputStreamWrapper</a>&nbsp;in,
                        long&nbsp;size,
@@ -707,7 +756,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>StoreFileReader</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.128">StoreFileReader</a>()</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.132">StoreFileReader</a>()</pre>
 <div class="block">ONLY USE DEFAULT CONSTRUCTOR FOR UNIT TESTS</div>
 </li>
 </ul>
@@ -725,7 +774,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>copyFields</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.108">copyFields</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;reader)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.112">copyFields</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;reader)</pre>
 </li>
 </ul>
 <a name="isPrimaryReplicaReader--">
@@ -734,7 +783,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isPrimaryReplicaReader</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.120">isPrimaryReplicaReader</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.124">isPrimaryReplicaReader</a>()</pre>
 </li>
 </ul>
 <a name="getComparator--">
@@ -743,7 +792,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getComparator</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.134">getComparator</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.138">getComparator</a>()</pre>
 </li>
 </ul>
 <a name="getStoreFileScanner-boolean-boolean-boolean-long-long-boolean-">
@@ -752,7 +801,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreFileScanner</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.149">getStoreFileScanner</a>(boolean&nbsp;cacheBlocks,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.153">getStoreFileScanner</a>(boolean&nbsp;cacheBlocks,
                                             boolean&nbsp;pread,
                                             boolean&nbsp;isCompaction,
                                             long&nbsp;readPt,
@@ -779,7 +828,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>incrementRefCount</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.159">incrementRefCount</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.163">incrementRefCount</a>()</pre>
 <div class="block">Indicate that the scanner has started reading with this reader. We need to increment the ref
  count so reader is not close until some object is holding the lock</div>
 </li>
@@ -790,7 +839,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>readCompleted</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.167">readCompleted</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.171">readCompleted</a>()</pre>
 <div class="block">Indicate that the scanner has finished reading with this reader. We need to decrement the ref
  count, and also, if this is not the common pread reader, we should close it.</div>
 </li>
@@ -802,7 +851,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <li class="blockList">
 <h4>getScanner</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&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanner.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.188">getScanner</a>(boolean&nbsp;cacheBlocks,
+public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanner.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.192">getScanner</a>(boolean&nbsp;cacheBlocks,
                                            boolean&nbsp;pread)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Do not write further code which depends on this call. Instead
    use getStoreFileScanner() which uses the StoreFileScanner class/interface
@@ -823,7 +872,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <li class="blockList">
 <h4>getScanner</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&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanner.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.206">getScanner</a>(boolean&nbsp;cacheBlocks,
+public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanner.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.210">getScanner</a>(boolean&nbsp;cacheBlocks,
                                            boolean&nbsp;pread,
                                            boolean&nbsp;isCompaction)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Do not write further code which depends on this call. Instead
@@ -845,7 +894,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.211">close</a>(boolean&nbsp;evictOnClose)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.215">close</a>(boolean&nbsp;evictOnClose)
            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>
@@ -859,7 +908,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>passesTimerangeFilter</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.223">passesTimerangeFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/io/TimeRange.html" title="class in org.apache.hadoop.hbase.io">TimeRange</a>&nbsp;tr,
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.236">passesTimerangeFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/io/TimeRange.html" title="class in org.apache.hadoop.hbase.io">TimeRange</a>&nbsp;tr,
                               long&nbsp;oldestUnexpiredTS)</pre>
 <div class="block">Check if this storeFile may contain keys within the TimeRange that
  have not expired (i.e. not older than oldestUnexpiredTS).</div>
@@ -879,7 +928,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>passesBloomFilter</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.244">passesBloomFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.257">passesBloomFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                           <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;byte[]&gt;&nbsp;columns)</pre>
 <div class="block">Checks whether the given scan passes the Bloom filter (if present). Only
  checks Bloom filters for single-row or single-row-column scans. Bloom
@@ -906,7 +955,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>passesDeleteFamilyBloomFilter</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.273">passesDeleteFamilyBloomFilter</a>(byte[]&nbsp;row,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.286">passesDeleteFamilyBloomFilter</a>(byte[]&nbsp;row,
                                              int&nbsp;rowOffset,
                                              int&nbsp;rowLen)</pre>
 </li>
@@ -917,7 +966,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>passesGeneralRowBloomFilter</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.308">passesGeneralRowBloomFilter</a>(byte[]&nbsp;row,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.321">passesGeneralRowBloomFilter</a>(byte[]&nbsp;row,
                                            int&nbsp;rowOffset,
                                            int&nbsp;rowLen)</pre>
 <div class="block">A method for checking Bloom filters. Called directly from
@@ -934,7 +983,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>passesGeneralRowColBloomFilter</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.332">passesGeneralRowColBloomFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.345">passesGeneralRowColBloomFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
 <div class="block">A method for checking Bloom filters. Called directly from
  StoreFileScanner in case of a multi-column query.</div>
 <dl>
@@ -951,7 +1000,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>checkGeneralBloomFilter</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.348">checkGeneralBloomFilter</a>(byte[]&nbsp;key,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.361">checkGeneralBloomFilter</a>(byte[]&nbsp;key,
                                         <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kvKey,
                                         <a href="../../../../../org/apache/hadoop/hbase/util/BloomFilter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilter</a>&nbsp;bloomFilter)</pre>
 </li>
@@ -962,7 +1011,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>passesKeyRangeFilter</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.425">passesKeyRangeFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.438">passesKeyRangeFilter</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)</pre>
 <div class="block">Checks whether the given scan rowkey range overlaps with the current storefile's</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -978,7 +1027,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>loadFileInfo</h4>
-<pre>public&nbsp;<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;byte[],byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.447">loadFileInfo</a>()
+<pre>public&nbsp;<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;byte[],byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.460">loadFileInfo</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></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -992,7 +1041,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>loadBloomfilter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.467">loadBloomfilter</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.480">loadBloomfilter</a>()</pre>
 </li>
 </ul>
 <a name="loadBloomfilter-org.apache.hadoop.hbase.io.hfile.BlockType-">
@@ -1001,7 +1050,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>loadBloomfilter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.472">loadBloomfilter</a>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;blockType)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.485">loadBloomfilter</a>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;blockType)</pre>
 </li>
 </ul>
 <a name="setBloomFilterFaulty-org.apache.hadoop.hbase.io.hfile.BlockType-">
@@ -1010,7 +1059,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>setBloomFilterFaulty</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.521">setBloomFilterFaulty</a>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;blockType)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.534">setBloomFilterFaulty</a>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile">BlockType</a>&nbsp;blockType)</pre>
 </li>
 </ul>
 <a name="getFilterEntries--">
@@ -1019,7 +1068,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getFilterEntries</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.536">getFilterEntries</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.549">getFilterEntries</a>()</pre>
 <div class="block">The number of Bloom filter entries in this store file, or an estimate
  thereof, if the Bloom filter is not loaded. This always returns an upper
  bound of the number of Bloom filter entries.</div>
@@ -1035,7 +1084,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>setGeneralBloomFilterFaulty</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.541">setGeneralBloomFilterFaulty</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.554">setGeneralBloomFilterFaulty</a>()</pre>
 </li>
 </ul>
 <a name="setDeleteFamilyBloomFilterFaulty--">
@@ -1044,7 +1093,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>setDeleteFamilyBloomFilterFaulty</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.545">setDeleteFamilyBloomFilterFaulty</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.558">setDeleteFamilyBloomFilterFaulty</a>()</pre>
 </li>
 </ul>
 <a name="getLastKey--">
@@ -1053,7 +1102,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastKey</h4>
-<pre>public&nbsp;<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.549">getLastKey</a>()</pre>
+<pre>public&nbsp;<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.562">getLastKey</a>()</pre>
 </li>
 </ul>
 <a name="getLastRowKey--">
@@ -1062,7 +1111,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastRowKey</h4>
-<pre>public&nbsp;<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;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.553">getLastRowKey</a>()</pre>
+<pre>public&nbsp;<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;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.566">getLastRowKey</a>()</pre>
 </li>
 </ul>
 <a name="midKey--">
@@ -1071,7 +1120,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>midKey</h4>
-<pre>public&nbsp;<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.557">midKey</a>()
+<pre>public&nbsp;<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.570">midKey</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></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1085,7 +1134,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>length</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.561">length</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.574">length</a>()</pre>
 </li>
 </ul>
 <a name="getTotalUncompressedBytes--">
@@ -1094,7 +1143,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getTotalUncompressedBytes</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.565">getTotalUncompressedBytes</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.578">getTotalUncompressedBytes</a>()</pre>
 </li>
 </ul>
 <a name="getEntries--">
@@ -1103,7 +1152,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getEntries</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.569">getEntries</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.582">getEntries</a>()</pre>
 </li>
 </ul>
 <a name="getDeleteFamilyCnt--">
@@ -1112,7 +1161,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getDeleteFamilyCnt</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.573">getDeleteFamilyCnt</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.586">getDeleteFamilyCnt</a>()</pre>
 </li>
 </ul>
 <a name="getFirstKey--">
@@ -1121,7 +1170,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getFirstKey</h4>
-<pre>public&nbsp;<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.577">getFirstKey</a>()</pre>
+<pre>public&nbsp;<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/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.590">getFirstKey</a>()</pre>
 </li>
 </ul>
 <a name="indexSize--">
@@ -1130,7 +1179,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>indexSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.581">indexSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.594">indexSize</a>()</pre>
 </li>
 </ul>
 <a name="getBloomFilterType--">
@@ -1139,7 +1188,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getBloomFilterType</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.585">getBloomFilterType</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver">BloomType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.598">getBloomFilterType</a>()</pre>
 </li>
 </ul>
 <a name="getSequenceID--">
@@ -1148,7 +1197,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getSequenceID</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.589">getSequenceID</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.602">getSequenceID</a>()</pre>
 </li>
 </ul>
 <a name="setSequenceID-long-">
@@ -1157,7 +1206,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>setSequenceID</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.593">setSequenceID</a>(long&nbsp;sequenceID)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.606">setSequenceID</a>(long&nbsp;sequenceID)</pre>
 </li>
 </ul>
 <a name="setBulkLoaded-boolean-">
@@ -1166,7 +1215,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>setBulkLoaded</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.597">setBulkLoaded</a>(boolean&nbsp;bulkLoadResult)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.610">setBulkLoaded</a>(boolean&nbsp;bulkLoadResult)</pre>
 </li>
 </ul>
 <a name="isBulkLoaded--">
@@ -1175,7 +1224,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>isBulkLoaded</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.601">isBulkLoaded</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.614">isBulkLoaded</a>()</pre>
 </li>
 </ul>
 <a name="getGeneralBloomFilter--">
@@ -1184,7 +1233,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getGeneralBloomFilter</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.605">getGeneralBloomFilter</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/util/BloomFilter.html" title="interface in org.apache.hadoop.hbase.util">BloomFilter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.618">getGeneralBloomFilter</a>()</pre>
 </li>
 </ul>
 <a name="getUncompressedDataIndexSize--">
@@ -1193,7 +1242,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getUncompressedDataIndexSize</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.609">getUncompressedDataIndexSize</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.622">getUncompressedDataIndexSize</a>()</pre>
 </li>
 </ul>
 <a name="getTotalBloomSize--">
@@ -1202,7 +1251,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getTotalBloomSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.613">getTotalBloomSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.626">getTotalBloomSize</a>()</pre>
 </li>
 </ul>
 <a name="getHFileVersion--">
@@ -1211,7 +1260,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getHFileVersion</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.619">getHFileVersion</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.632">getHFileVersion</a>()</pre>
 </li>
 </ul>
 <a name="getHFileMinorVersion--">
@@ -1220,7 +1269,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getHFileMinorVersion</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.623">getHFileMinorVersion</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.636">getHFileMinorVersion</a>()</pre>
 </li>
 </ul>
 <a name="getHFileReader--">
@@ -1229,7 +1278,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getHFileReader</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Reader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Reader</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.627">getHFileReader</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFile.Reader.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFile.Reader</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.640">getHFileReader</a>()</pre>
 </li>
 </ul>
 <a name="disableBloomFilterForTesting--">
@@ -1238,7 +1287,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>disableBloomFilterForTesting</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.631">disableBloomFilterForTesting</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.644">disableBloomFilterForTesting</a>()</pre>
 </li>
 </ul>
 <a name="getMaxTimestamp--">
@@ -1247,7 +1296,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxTimestamp</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.636">getMaxTimestamp</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.649">getMaxTimestamp</a>()</pre>
 </li>
 </ul>
 <a name="isSkipResetSeqId--">
@@ -1256,16 +1305,25 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <ul class="blockList">
 <li class="blockList">
 <h4>isSkipResetSeqId</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.640">isSkipResetSeqId</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.653">isSkipResetSeqId</a>()</pre>
 </li>
 </ul>
 <a name="setSkipResetSeqId-boolean-">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>setSkipResetSeqId</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.644">setSkipResetSeqId</a>(boolean&nbsp;skipResetSeqId)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.657">setSkipResetSeqId</a>(boolean&nbsp;skipResetSeqId)</pre>
+</li>
+</ul>
+<a name="setListener-org.apache.hadoop.hbase.regionserver.StoreFileReader.Listener-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>setListener</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFileReader.html#line.661">setListener</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a>&nbsp;listener)</pre>
 </li>
 </ul>
 </li>
@@ -1297,7 +1355,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/StoreFileReader.html" target="_top">Frames</a></li>
@@ -1321,7 +1379,7 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileScanne
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
 <li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.html b/devapidocs/org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.html
index 456625f..d6b589b 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -439,7 +439,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HStoreFile.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HStoreFile.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HStoreFile.html
index ba80649..6513db7 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HStoreFile.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HStoreFile.html
@@ -1257,25 +1257,26 @@
 </td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">HStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#removeCompactedfiles-java.util.Collection-">removeCompactedfiles</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;compactedfiles)</code>
-<div class="block">Archives and removes the compacted files</div>
-</td>
-</tr>
-<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">DefaultStoreFileManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/DefaultStoreFileManager.html#removeCompactedFiles-java.util.Collection-">removeCompactedFiles</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;removedCompactedfiles)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreFileManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html#removeCompactedFiles-java.util.Collection-">removeCompactedFiles</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;compactedFiles)</code>
 <div class="block">Remove the compacted files</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">StripeStoreFileManager.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StripeStoreFileManager.html#removeCompactedFiles-java.util.Collection-">removeCompactedFiles</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;compactedFiles)</code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">HStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#removeCompactedfiles-java.util.Collection-boolean-">removeCompactedfiles</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;compactedfiles,
+                    boolean&nbsp;storeClosing)</code>
+<div class="block">Archives and removes the compacted files</div>
+</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">HRegionFileSystem.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html#removeStoreFiles-java.lang.String-java.util.Collection-">removeStoreFiles</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;familyName,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/StoreFileReader.Listener.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/StoreFileReader.Listener.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/StoreFileReader.Listener.html
new file mode 100644
index 0000000..5824117
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/StoreFileReader.Listener.html
@@ -0,0 +1,193 @@
+<!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 Interface org.apache.hadoop.hbase.regionserver.StoreFileReader.Listener (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Interface org.apache.hadoop.hbase.regionserver.StoreFileReader.Listener (Apache HBase 3.0.0-SNAPSHOT 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/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">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/regionserver/class-use/StoreFileReader.Listener.html" target="_top">Frames</a></li>
+<li><a href="StoreFileReader.Listener.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 Interface org.apache.hadoop.hbase.regionserver.StoreFileReader.Listener" class="title">Uses of Interface<br>org.apache.hadoop.hbase.regionserver.StoreFileReader.Listener</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<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>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.regionserver">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a> in <a href="../../../../../../org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></h3>
+<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/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a> that implement <a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a></span></code>
+<div class="block">A Store data file.</div>
+</td>
+</tr>
+</tbody>
+</table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
+<caption><span>Fields in <a href="../../../../../../org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a> declared as <a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a></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>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a></code></td>
+<td class="colLast"><span class="typeNameLabel">StoreFileReader.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#listener">listener</a></span></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+<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/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a> with parameters of type <a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</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>void</code></td>
+<td class="colLast"><span class="typeNameLabel">StoreFileReader.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setListener-org.apache.hadoop.hbase.regionserver.StoreFileReader.Listener-">setListener</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a>&nbsp;listener)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</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/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">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/regionserver/class-use/StoreFileReader.Listener.html" target="_top">Frames</a></li>
+<li><a href="StoreFileReader.Listener.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/738e976e/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/StoreFileReader.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/StoreFileReader.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/StoreFileReader.html
index 2a8d35d..455997d 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/StoreFileReader.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/StoreFileReader.html
@@ -228,6 +228,19 @@
 </tr>
 </tbody>
 </table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
+<caption><span>Fields in <a href="../../../../../../org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a> with type parameters of type <a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></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>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>private <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="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">HStoreFile.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#streamReaders">streamReaders</a></span></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
 <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/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a> that return <a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
@@ -301,6 +314,14 @@
                        <a href="../../../../../../org/apache/hadoop/hbase/io/Reference.html" title="class in org.apache.hadoop.hbase.io">Reference</a>&nbsp;r,
                        <a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;reader)</code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">StoreFileReader.Listener.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html#storeFileReaderClosed-org.apache.hadoop.hbase.regionserver.StoreFileReader-">storeFileReaderClosed</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;reader)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><span class="typeNameLabel">HStoreFile.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html#storeFileReaderClosed-org.apache.hadoop.hbase.regionserver.StoreFileReader-">storeFileReaderClosed</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&nbsp;reader)</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/738e976e/devapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html b/devapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
index 2816cef..1d30f05 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
@@ -67,6 +67,7 @@
 <li><a href="StoreConfigInformation.html" title="interface in org.apache.hadoop.hbase.regionserver" target="classFrame"><span class="interfaceName">StoreConfigInformation</span></a></li>
 <li><a href="StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver" target="classFrame"><span class="interfaceName">StoreFile</span></a></li>
 <li><a href="StoreFileManager.html" title="interface in org.apache.hadoop.hbase.regionserver" target="classFrame"><span class="interfaceName">StoreFileManager</span></a></li>
+<li><a href="StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver" target="classFrame"><span class="interfaceName">StoreFileReader.Listener</span></a></li>
 <li><a href="StoreFlushContext.html" title="interface in org.apache.hadoop.hbase.regionserver" target="classFrame"><span class="interfaceName">StoreFlushContext</span></a></li>
 </ul>
 <h2 title="Classes">Classes</h2>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html b/devapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
index 909a425..d877d45 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
@@ -415,6 +415,10 @@
 </td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFlushContext</a></td>
 <td class="colLast">
 <div class="block">A package protected interface for a store flushing.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/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 ee727ff..9f73bae 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -303,7 +303,7 @@
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HStore.StoreFlusherImpl</span></a> (implements org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFlushContext</a>)</li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HStoreFile</span></a> (implements org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HStoreFile</span></a> (implements org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>, org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ImmutableMemStoreLAB.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ImmutableMemStoreLAB</span></a> (implements org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreLAB.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreLAB</a>)</li>
 <li type="circle">org.apache.hadoop.mapreduce.InputFormat&lt;K,V&gt;
 <ul>
@@ -701,6 +701,7 @@
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreConfigInformation.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">StoreConfigInformation</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">StoreFile</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileManager.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">StoreFileManager</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">StoreFileReader.Listener</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">StoreFlushContext</span></a></li>
 </ul>
 <h2 title="Enum Hierarchy">Enum Hierarchy</h2>
@@ -709,20 +710,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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">BloomType</span></a></li>
 </ul>
 </li>
 </ul>


[06/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationProcedureRetry.MockHMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationProcedureRetry.MockHMaster.html b/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationProcedureRetry.MockHMaster.html
index e4180ea..320a1f0 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationProcedureRetry.MockHMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationProcedureRetry.MockHMaster.html
@@ -270,7 +270,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.HMaster</h3>
-<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createRpcServices, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessor
 Host, getMasterCoprocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationLoad, getReplicationPeerConfig, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getSyncReplicationReplayWALManager, getTableDescriptors, getTableStateManager, getUseThisHostnameInstead, getWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isInitialized, isInMaintenanceMode, isNormalizerO
 n, isSplitOrMergeEnabled, listDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, transitReplicationPeerSyncReplicationState, truncateTable, updateConfigurationForQuotasObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
+<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createRpcServices, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessor
 Host, getMasterCoprocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationLoad, getReplicationPeerConfig, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getSyncReplicationReplayWALManager, getTableDescriptors, getTableStateManager, getUseThisHostnameInstead, getWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isInitialized, isInMaintenanceMode, isNormalizerO
 n, isSplitOrMergeEnabled, listDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, transitReplicationPeerSyncReplicationState, truncateTable, updateConfigurationForQuotasObserver, updateReplicationPeerConfig, waitForMasterActive, waitUntilMetaOnline, waitUntilNamespaceOnline</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/testdevapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index cc529ef..f21f9cf 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -1185,7 +1185,7 @@
 <li type="circle">org.apache.hadoop.hbase.coprocessor.example.<a href="org/apache/hadoop/hbase/coprocessor/example/TestRefreshHFilesEndpoint.HStoreWithFaultyRefreshHFilesAPI.html" title="class in org.apache.hadoop.hbase.coprocessor.example"><span class="typeNameLink">TestRefreshHFilesEndpoint.HStoreWithFaultyRefreshHFilesAPI</span></a></li>
 </ul>
 </li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.HStoreFile (implements org.apache.hadoop.hbase.regionserver.StoreFile)
+<li type="circle">org.apache.hadoop.hbase.regionserver.HStoreFile (implements org.apache.hadoop.hbase.regionserver.StoreFile, org.apache.hadoop.hbase.regionserver.StoreFileReader.Listener)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MockHStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MockHStoreFile</span></a></li>
 </ul>
@@ -2477,6 +2477,7 @@
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestClassLoading.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">TestClassLoading</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestClassLoading.TestMasterCoprocessor.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">TestClassLoading.TestMasterCoprocessor</span></a> (implements org.apache.hadoop.hbase.coprocessor.MasterCoprocessor, org.apache.hadoop.hbase.coprocessor.MasterObserver)</li>
 <li type="circle">org.apache.hadoop.hbase.master.cleaner.<a href="org/apache/hadoop/hbase/master/cleaner/TestCleanerChore.html" title="class in org.apache.hadoop.hbase.master.cleaner"><span class="typeNameLink">TestCleanerChore</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCleanupCompactedFileOnRegionClose</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestClearRegionBlockCache.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestClearRegionBlockCache</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestClientClusterMetrics.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestClientClusterMetrics</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestClientClusterMetrics.MyObserver.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestClientClusterMetrics.MyObserver</span></a> (implements org.apache.hadoop.hbase.coprocessor.MasterCoprocessor, org.apache.hadoop.hbase.coprocessor.MasterObserver)</li>


[20/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html
index eecf20f..df4d2d2 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.RegionInTransitionChore.html
@@ -1218,664 +1218,665 @@
 <span class="sourceLineNo">1210</span>    long startTime = System.nanoTime();<a name="line.1210"></a>
 <span class="sourceLineNo">1211</span>    LOG.debug("Joining cluster...");<a name="line.1211"></a>
 <span class="sourceLineNo">1212</span><a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>    // Scan hbase:meta to build list of existing regions, servers, and assignment<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>    // hbase:meta is online when we get to here and TableStateManager has been started.<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>    loadMeta();<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span><a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>    while (master.getServerManager().countOfRegionServers() &lt; 1) {<a name="line.1217"></a>
-<span class="sourceLineNo">1218</span>      LOG.info("Waiting for RegionServers to join; current count={}",<a name="line.1218"></a>
-<span class="sourceLineNo">1219</span>        master.getServerManager().countOfRegionServers());<a name="line.1219"></a>
-<span class="sourceLineNo">1220</span>      Threads.sleep(250);<a name="line.1220"></a>
-<span class="sourceLineNo">1221</span>    }<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>    LOG.info("Number of RegionServers={}", master.getServerManager().countOfRegionServers());<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span><a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>    processOfflineRegions();<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span><a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>    // Start the RIT chore<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span>    master.getMasterProcedureExecutor().addChore(this.ritChore);<a name="line.1227"></a>
-<span class="sourceLineNo">1228</span><a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>    long costMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime);<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>    LOG.info("Joined the cluster in {}", StringUtils.humanTimeDiff(costMs));<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>  }<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span><a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>  // Create assign procedure for offline regions.<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>  // Just follow the old processofflineServersWithOnlineRegions method. Since now we do not need to<a name="line.1234"></a>
-<span class="sourceLineNo">1235</span>  // deal with dead server any more, we only deal with the regions in OFFLINE state in this method.<a name="line.1235"></a>
-<span class="sourceLineNo">1236</span>  // And this is a bit strange, that for new regions, we will add it in CLOSED state instead of<a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>  // OFFLINE state, and usually there will be a procedure to track them. The<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>  // processofflineServersWithOnlineRegions is a legacy from long ago, as things are going really<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>  // different now, maybe we do not need this method any more. Need to revisit later.<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span>  private void processOfflineRegions() {<a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>    List&lt;RegionInfo&gt; offlineRegions = regionStates.getRegionStates().stream()<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>      .filter(RegionState::isOffline).filter(s -&gt; isTableEnabled(s.getRegion().getTable()))<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>      .map(RegionState::getRegion).collect(Collectors.toList());<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>    if (!offlineRegions.isEmpty()) {<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>      master.getMasterProcedureExecutor().submitProcedures(<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>        master.getAssignmentManager().createRoundRobinAssignProcedures(offlineRegions));<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    }<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span>  }<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span><a name="line.1249"></a>
-<span class="sourceLineNo">1250</span>  private void loadMeta() throws IOException {<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // TODO: use a thread pool<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    regionStateStore.visitMeta(new RegionStateStore.RegionStateVisitor() {<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>      @Override<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      public void visitRegionState(Result result, final RegionInfo regionInfo, final State state,<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>          final ServerName regionLocation, final ServerName lastHost, final long openSeqNum) {<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>        if (state == null &amp;&amp; regionLocation == null &amp;&amp; lastHost == null &amp;&amp;<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>            openSeqNum == SequenceId.NO_SEQUENCE_ID) {<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>          // This is a row with nothing in it.<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>          LOG.warn("Skipping empty row={}", result);<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>          return;<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>        }<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>        State localState = state;<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>        if (localState == null) {<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span>          // No region state column data in hbase:meta table! Are I doing a rolling upgrade from<a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>          // hbase1 to hbase2? Am I restoring a SNAPSHOT or otherwise adding a region to hbase:meta?<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>          // In any of these cases, state is empty. For now, presume OFFLINE but there are probably<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>          // cases where we need to probe more to be sure this correct; TODO informed by experience.<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>          LOG.info(regionInfo.getEncodedName() + " regionState=null; presuming " + State.OFFLINE);<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span><a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>          localState = State.OFFLINE;<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>        }<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span>        RegionStateNode regionNode = regionStates.getOrCreateRegionStateNode(regionInfo);<a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>        // Do not need to lock on regionNode, as we can make sure that before we finish loading<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>        // meta, all the related procedures can not be executed. The only exception is formeta<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>        // region related operations, but here we do not load the informations for meta region.<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>        regionNode.setState(localState);<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span>        regionNode.setLastHost(lastHost);<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>        regionNode.setRegionLocation(regionLocation);<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>        regionNode.setOpenSeqNum(openSeqNum);<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span><a name="line.1280"></a>
-<span class="sourceLineNo">1281</span>        if (localState == State.OPEN) {<a name="line.1281"></a>
-<span class="sourceLineNo">1282</span>          assert regionLocation != null : "found null region location for " + regionNode;<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span>          regionStates.addRegionToServer(regionNode);<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>        } else if (localState == State.OFFLINE || regionInfo.isOffline()) {<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>          regionStates.addToOfflineRegions(regionNode);<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>        }<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span>      }<a name="line.1287"></a>
-<span class="sourceLineNo">1288</span>    });<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span><a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    // every assignment is blocked until meta is loaded.<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>    wakeMetaLoadedEvent();<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span>  }<a name="line.1292"></a>
-<span class="sourceLineNo">1293</span><a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>  /**<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>   * Used to check if the meta loading is done.<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span>   * &lt;p/&gt;<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span>   * if not we throw PleaseHoldException since we are rebuilding the RegionStates<a name="line.1297"></a>
-<span class="sourceLineNo">1298</span>   * @param hri region to check if it is already rebuild<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>   * @throws PleaseHoldException if meta has not been loaded yet<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>   */<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>  private void checkMetaLoaded(RegionInfo hri) throws PleaseHoldException {<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span>    if (!isRunning()) {<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>      throw new PleaseHoldException("AssignmentManager not running");<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>    }<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>    boolean meta = isMetaRegion(hri);<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>    boolean metaLoaded = isMetaLoaded();<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span>    if (!meta &amp;&amp; !metaLoaded) {<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>      throw new PleaseHoldException(<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>        "Master not fully online; hbase:meta=" + meta + ", metaLoaded=" + metaLoaded);<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    }<a name="line.1310"></a>
-<span class="sourceLineNo">1311</span>  }<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span><a name="line.1312"></a>
-<span class="sourceLineNo">1313</span>  // ============================================================================================<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  //  TODO: Metrics<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>  // ============================================================================================<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span>  public int getNumRegionsOpened() {<a name="line.1316"></a>
-<span class="sourceLineNo">1317</span>    // TODO: Used by TestRegionPlacement.java and assume monotonically increasing value<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span>    return 0;<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>  }<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span><a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>  public void submitServerCrash(final ServerName serverName, final boolean shouldSplitWal) {<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span>    boolean carryingMeta = isCarryingMeta(serverName);<a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>    ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec = this.master.getMasterProcedureExecutor();<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>    procExec.submitProcedure(new ServerCrashProcedure(procExec.getEnvironment(), serverName,<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>      shouldSplitWal, carryingMeta));<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>    LOG.debug("Added=" + serverName +<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span>      " to dead servers, submitted shutdown handler to be executed meta=" + carryingMeta);<a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>  }<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span><a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>  public void offlineRegion(final RegionInfo regionInfo) {<a name="line.1330"></a>
-<span class="sourceLineNo">1331</span>    // TODO used by MasterRpcServices<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span>    RegionStateNode node = regionStates.getRegionStateNode(regionInfo);<a name="line.1332"></a>
-<span class="sourceLineNo">1333</span>    if (node != null) {<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span>      node.offline();<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    }<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span>  }<a name="line.1336"></a>
-<span class="sourceLineNo">1337</span><a name="line.1337"></a>
-<span class="sourceLineNo">1338</span>  public void onlineRegion(final RegionInfo regionInfo, final ServerName serverName) {<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>    // TODO used by TestSplitTransactionOnCluster.java<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>  }<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span><a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>  public Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; getSnapShotOfAssignment(<a name="line.1342"></a>
-<span class="sourceLineNo">1343</span>      final Collection&lt;RegionInfo&gt; regions) {<a name="line.1343"></a>
-<span class="sourceLineNo">1344</span>    return regionStates.getSnapShotOfAssignment(regions);<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span>  }<a name="line.1345"></a>
-<span class="sourceLineNo">1346</span><a name="line.1346"></a>
-<span class="sourceLineNo">1347</span>  // ============================================================================================<a name="line.1347"></a>
-<span class="sourceLineNo">1348</span>  //  TODO: UTILS/HELPERS?<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span>  // ============================================================================================<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span>  /**<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span>   * Used by the client (via master) to identify if all regions have the schema updates<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span>   *<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span>   * @param tableName<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span>   * @return Pair indicating the status of the alter command (pending/total)<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span>   * @throws IOException<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>   */<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>  public Pair&lt;Integer, Integer&gt; getReopenStatus(TableName tableName) {<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span>    if (isTableDisabled(tableName)) return new Pair&lt;Integer, Integer&gt;(0, 0);<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span><a name="line.1359"></a>
-<span class="sourceLineNo">1360</span>    final List&lt;RegionState&gt; states = regionStates.getTableRegionStates(tableName);<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>    int ritCount = 0;<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>    for (RegionState regionState: states) {<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span>      if (!regionState.isOpened()) ritCount++;<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>    }<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span>    return new Pair&lt;Integer, Integer&gt;(ritCount, states.size());<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span>  }<a name="line.1366"></a>
-<span class="sourceLineNo">1367</span><a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>  // ============================================================================================<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>  //  TODO: Region State In Transition<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>  // ============================================================================================<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>  public boolean hasRegionsInTransition() {<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>    return regionStates.hasRegionsInTransition();<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span>  }<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span><a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>  public List&lt;RegionStateNode&gt; getRegionsInTransition() {<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>    return regionStates.getRegionsInTransition();<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>  }<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span><a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>  public List&lt;RegionInfo&gt; getAssignedRegions() {<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span>    return regionStates.getAssignedRegions();<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>  }<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span><a name="line.1382"></a>
-<span class="sourceLineNo">1383</span>  public RegionInfo getRegionInfo(final byte[] regionName) {<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>    final RegionStateNode regionState = regionStates.getRegionStateNodeFromName(regionName);<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>    return regionState != null ? regionState.getRegionInfo() : null;<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>  }<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span><a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>  // ============================================================================================<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span>  //  Expected states on region state transition.<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>  //  Notice that there is expected states for transiting to OPENING state, this is because SCP.<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>  //  See the comments in regionOpening method for more details.<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>  // ============================================================================================<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>  private static final State[] STATES_EXPECTED_ON_OPEN = {<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span>    State.OPENING, // Normal case<a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>    State.OPEN // Retrying<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>  };<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span><a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>  private static final State[] STATES_EXPECTED_ON_CLOSING = {<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>    State.OPEN, // Normal case<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>    State.CLOSING, // Retrying<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>    State.SPLITTING, // Offline the split parent<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>    State.MERGING // Offline the merge parents<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span>  };<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span><a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>  private static final State[] STATES_EXPECTED_ON_CLOSED = {<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>    State.CLOSING, // Normal case<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>    State.CLOSED // Retrying<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>  };<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span><a name="line.1409"></a>
-<span class="sourceLineNo">1410</span>  // This is for manually scheduled region assign, can add other states later if we find out other<a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>  // usages<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>  private static final State[] STATES_EXPECTED_ON_ASSIGN = { State.CLOSED, State.OFFLINE };<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span><a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>  // We only allow unassign or move a region which is in OPEN state.<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>  private static final State[] STATES_EXPECTED_ON_UNASSIGN_OR_MOVE = { State.OPEN };<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span><a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>  // ============================================================================================<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>  //  Region Status update<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>  //  Should only be called in TransitRegionStateProcedure<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>  // ============================================================================================<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>  private void transitStateAndUpdate(RegionStateNode regionNode, RegionState.State newState,<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span>      RegionState.State... expectedStates) throws IOException {<a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>    RegionState.State state = regionNode.getState();<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>    regionNode.transitionState(newState, expectedStates);<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>    boolean succ = false;<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>    try {<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>      regionStateStore.updateRegionLocation(regionNode);<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>      succ = true;<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>    } finally {<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>      if (!succ) {<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>        // revert<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>        regionNode.setState(state);<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>      }<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>    }<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>  }<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span><a name="line.1436"></a>
-<span class="sourceLineNo">1437</span>  // should be called within the synchronized block of RegionStateNode<a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>  void regionOpening(RegionStateNode regionNode) throws IOException {<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span>    // As in SCP, for performance reason, there is no TRSP attached with this region, we will not<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span>    // update the region state, which means that the region could be in any state when we want to<a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>    // assign it after a RS crash. So here we do not pass the expectedStates parameter.<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>    transitStateAndUpdate(regionNode, State.OPENING);<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>    regionStates.addRegionToServer(regionNode);<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span>    // update the operation count metrics<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span>    metrics.incrementOperationCounter();<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>  }<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span><a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>  // should be called within the synchronized block of RegionStateNode.<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span>  // The parameter 'giveUp' means whether we will try to open the region again, if it is true, then<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>  // we will persist the FAILED_OPEN state into hbase:meta.<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>  void regionFailedOpen(RegionStateNode regionNode, boolean giveUp) throws IOException {<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span>    RegionState.State state = regionNode.getState();<a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>    ServerName regionLocation = regionNode.getRegionLocation();<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>    if (giveUp) {<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>      regionNode.setState(State.FAILED_OPEN);<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span>      regionNode.setRegionLocation(null);<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>      boolean succ = false;<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>      try {<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>        regionStateStore.updateRegionLocation(regionNode);<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>        succ = true;<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span>      } finally {<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>        if (!succ) {<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span>          // revert<a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>          regionNode.setState(state);<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>          regionNode.setRegionLocation(regionLocation);<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>        }<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>      }<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>    }<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>    if (regionLocation != null) {<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>      regionStates.removeRegionFromServer(regionLocation, regionNode);<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>    }<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>  }<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span><a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>  // should be called within the synchronized block of RegionStateNode<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>  void regionOpened(RegionStateNode regionNode) throws IOException {<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span>    // TODO: OPENING Updates hbase:meta too... we need to do both here and there?<a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>    // That is a lot of hbase:meta writing.<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>    transitStateAndUpdate(regionNode, State.OPEN, STATES_EXPECTED_ON_OPEN);<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>    RegionInfo hri = regionNode.getRegionInfo();<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span>    if (isMetaRegion(hri)) {<a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>      // Usually we'd set a table ENABLED at this stage but hbase:meta is ALWAYs enabled, it<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>      // can't be disabled -- so skip the RPC (besides... enabled is managed by TableStateManager<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>      // which is backed by hbase:meta... Avoid setting ENABLED to avoid having to update state<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>      // on table that contains state.<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span>      setMetaAssigned(hri, true);<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>    }<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>    regionStates.addRegionToServer(regionNode);<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>    regionStates.removeFromFailedOpen(hri);<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>  }<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span><a name="line.1490"></a>
-<span class="sourceLineNo">1491</span>  // should be called within the synchronized block of RegionStateNode<a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>  void regionClosing(RegionStateNode regionNode) throws IOException {<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>    transitStateAndUpdate(regionNode, State.CLOSING, STATES_EXPECTED_ON_CLOSING);<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span><a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>    RegionInfo hri = regionNode.getRegionInfo();<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span>    // Set meta has not initialized early. so people trying to create/edit tables will wait<a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>    if (isMetaRegion(hri)) {<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>      setMetaAssigned(hri, false);<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>    }<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>    regionStates.addRegionToServer(regionNode);<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>    // update the operation count metrics<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>    metrics.incrementOperationCounter();<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span>  }<a name="line.1503"></a>
-<span class="sourceLineNo">1504</span><a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>  // should be called within the synchronized block of RegionStateNode<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>  // The parameter 'normally' means whether we are closed cleanly, if it is true, then it means that<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>  // we are closed due to a RS crash.<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>  void regionClosed(RegionStateNode regionNode, boolean normally) throws IOException {<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>    RegionState.State state = regionNode.getState();<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>    ServerName regionLocation = regionNode.getRegionLocation();<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>    if (normally) {<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>      regionNode.transitionState(State.CLOSED, STATES_EXPECTED_ON_CLOSED);<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>    } else {<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span>      // For SCP<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>      regionNode.transitionState(State.ABNORMALLY_CLOSED);<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span>    }<a name="line.1516"></a>
-<span class="sourceLineNo">1517</span>    regionNode.setRegionLocation(null);<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>    boolean succ = false;<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>    try {<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>      regionStateStore.updateRegionLocation(regionNode);<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>      succ = true;<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>    } finally {<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span>      if (!succ) {<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>        // revert<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span>        regionNode.setState(state);<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>        regionNode.setRegionLocation(regionLocation);<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>      }<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>    }<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>    if (regionLocation != null) {<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>      regionNode.setLastHost(regionLocation);<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>      regionStates.removeRegionFromServer(regionLocation, regionNode);<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>    }<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span>  }<a name="line.1533"></a>
-<span class="sourceLineNo">1534</span><a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>  public void markRegionAsSplit(final RegionInfo parent, final ServerName serverName,<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>      final RegionInfo daughterA, final RegionInfo daughterB) throws IOException {<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>    // Update hbase:meta. Parent will be marked offline and split up in hbase:meta.<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span>    // The parent stays in regionStates until cleared when removed by CatalogJanitor.<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>    // Update its state in regionStates to it shows as offline and split when read<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>    // later figuring what regions are in a table and what are not: see<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>    // regionStates#getRegionsOfTable<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>    final RegionStateNode node = regionStates.getOrCreateRegionStateNode(parent);<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>    node.setState(State.SPLIT);<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>    final RegionStateNode nodeA = regionStates.getOrCreateRegionStateNode(daughterA);<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span>    nodeA.setState(State.SPLITTING_NEW);<a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>    final RegionStateNode nodeB = regionStates.getOrCreateRegionStateNode(daughterB);<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span>    nodeB.setState(State.SPLITTING_NEW);<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span><a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>    regionStateStore.splitRegion(parent, daughterA, daughterB, serverName);<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span>    if (shouldAssignFavoredNodes(parent)) {<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>      List&lt;ServerName&gt; onlineServers = this.master.getServerManager().getOnlineServersList();<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>      ((FavoredNodesPromoter)getBalancer()).<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>          generateFavoredNodesForDaughter(onlineServers, parent, daughterA, daughterB);<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span>    }<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>  }<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span><a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>  /**<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>   * When called here, the merge has happened. The two merged regions have been<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>   * unassigned and the above markRegionClosed has been called on each so they have been<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>   * disassociated from a hosting Server. The merged region will be open after this call. The<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span>   * merged regions are removed from hbase:meta below&gt; Later they are deleted from the filesystem<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>   * by the catalog janitor running against hbase:meta. It notices when the merged region no<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>   * longer holds references to the old regions.<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>   */<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>  public void markRegionAsMerged(final RegionInfo child, final ServerName serverName,<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>      final RegionInfo mother, final RegionInfo father) throws IOException {<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>    final RegionStateNode node = regionStates.getOrCreateRegionStateNode(child);<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>    node.setState(State.MERGED);<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>    regionStates.deleteRegion(mother);<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>    regionStates.deleteRegion(father);<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>    regionStateStore.mergeRegions(child, mother, father, serverName);<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>    if (shouldAssignFavoredNodes(child)) {<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>      ((FavoredNodesPromoter)getBalancer()).<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>        generateFavoredNodesForMergedRegion(child, mother, father);<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>    }<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>  }<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span><a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>  /*<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>   * Favored nodes should be applied only when FavoredNodes balancer is configured and the region<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>   * belongs to a non-system table.<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>   */<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>  private boolean shouldAssignFavoredNodes(RegionInfo region) {<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>    return this.shouldAssignRegionsWithFavoredNodes &amp;&amp;<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span>        FavoredNodesManager.isFavoredNodeApplicable(region);<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>  }<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span><a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>  // ============================================================================================<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>  //  Assign Queue (Assign/Balance)<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span>  // ============================================================================================<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>  private final ArrayList&lt;RegionStateNode&gt; pendingAssignQueue = new ArrayList&lt;RegionStateNode&gt;();<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>  private final ReentrantLock assignQueueLock = new ReentrantLock();<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>  private final Condition assignQueueFullCond = assignQueueLock.newCondition();<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span><a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>  /**<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>   * Add the assign operation to the assignment queue.<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>   * The pending assignment operation will be processed,<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span>   * and each region will be assigned by a server using the balancer.<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>   */<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>  protected void queueAssign(final RegionStateNode regionNode) {<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>    regionNode.getProcedureEvent().suspend();<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span><a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>    // TODO: quick-start for meta and the other sys-tables?<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>    assignQueueLock.lock();<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>    try {<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>      pendingAssignQueue.add(regionNode);<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>      if (regionNode.isSystemTable() ||<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>          pendingAssignQueue.size() == 1 ||<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span>          pendingAssignQueue.size() &gt;= assignDispatchWaitQueueMaxSize) {<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>        assignQueueFullCond.signal();<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>      }<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>    } finally {<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span>      assignQueueLock.unlock();<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>    }<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>  }<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span><a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>  private void startAssignmentThread() {<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>    // Get Server Thread name. Sometimes the Server is mocked so may not implement HasThread.<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>    // For example, in tests.<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>    String name = master instanceof HasThread? ((HasThread)master).getName():<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>        master.getServerName().toShortString();<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span>    assignThread = new Thread(name) {<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>      @Override<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>      public void run() {<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>        while (isRunning()) {<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>          processAssignQueue();<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>        }<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>        pendingAssignQueue.clear();<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>      }<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>    };<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>    assignThread.setDaemon(true);<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>    assignThread.start();<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>  }<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span><a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>  private void stopAssignmentThread() {<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>    assignQueueSignal();<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>    try {<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>      while (assignThread.isAlive()) {<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>        assignQueueSignal();<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>        assignThread.join(250);<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>      }<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>    } catch (InterruptedException e) {<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>      LOG.warn("join interrupted", e);<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span>      Thread.currentThread().interrupt();<a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>    }<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>  }<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span><a name="line.1646"></a>
-<span class="sourceLineNo">1647</span>  private void assignQueueSignal() {<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span>    assignQueueLock.lock();<a name="line.1648"></a>
-<span class="sourceLineNo">1649</span>    try {<a name="line.1649"></a>
-<span class="sourceLineNo">1650</span>      assignQueueFullCond.signal();<a name="line.1650"></a>
-<span class="sourceLineNo">1651</span>    } finally {<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span>      assignQueueLock.unlock();<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span>    }<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span>  }<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span><a name="line.1655"></a>
-<span class="sourceLineNo">1656</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings("WA_AWAIT_NOT_IN_LOOP")<a name="line.1656"></a>
-<span class="sourceLineNo">1657</span>  private HashMap&lt;RegionInfo, RegionStateNode&gt; waitOnAssignQueue() {<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span>    HashMap&lt;RegionInfo, RegionStateNode&gt; regions = null;<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span><a name="line.1659"></a>
-<span class="sourceLineNo">1660</span>    assignQueueLock.lock();<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span>    try {<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span>      if (pendingAssignQueue.isEmpty() &amp;&amp; isRunning()) {<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span>        assignQueueFullCond.await();<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span>      }<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span><a name="line.1665"></a>
-<span class="sourceLineNo">1666</span>      if (!isRunning()) return null;<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span>      assignQueueFullCond.await(assignDispatchWaitMillis, TimeUnit.MILLISECONDS);<a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>      regions = new HashMap&lt;RegionInfo, RegionStateNode&gt;(pendingAssignQueue.size());<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span>      for (RegionStateNode regionNode: pendingAssignQueue) {<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span>        regions.put(regionNode.getRegionInfo(), regionNode);<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span>      }<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span>      pendingAssignQueue.clear();<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span>    } catch (InterruptedException e) {<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span>      LOG.warn("got interrupted ", e);<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span>      Thread.currentThread().interrupt();<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span>    } finally {<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span>      assignQueueLock.unlock();<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span>    }<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span>    return regions;<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span>  }<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span><a name="line.1681"></a>
-<span class="sourceLineNo">1682</span>  private void processAssignQueue() {<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span>    final HashMap&lt;RegionInfo, RegionStateNode&gt; regions = waitOnAssignQueue();<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span>    if (regions == null || regions.size() == 0 || !isRunning()) {<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span>      return;<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span>    }<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span><a name="line.1687"></a>
-<span class="sourceLineNo">1688</span>    if (LOG.isTraceEnabled()) {<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span>      LOG.trace("PROCESS ASSIGN QUEUE regionCount=" + regions.size());<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span>    }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span><a name="line.1691"></a>
-<span class="sourceLineNo">1692</span>    // TODO: Optimize balancer. pass a RegionPlan?<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span>    final HashMap&lt;RegionInfo, ServerName&gt; retainMap = new HashMap&lt;&gt;();<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span>    final List&lt;RegionInfo&gt; userHRIs = new ArrayList&lt;&gt;(regions.size());<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span>    // Regions for system tables requiring reassignment<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span>    final List&lt;RegionInfo&gt; systemHRIs = new ArrayList&lt;&gt;();<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span>    for (RegionStateNode regionStateNode: regions.values()) {<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span>      boolean sysTable = regionStateNode.isSystemTable();<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span>      final List&lt;RegionInfo&gt; hris = sysTable? systemHRIs: userHRIs;<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span>      if (regionStateNode.getRegionLocation() != null) {<a name="line.1700"></a>
-<span class="sourceLineNo">1701</span>        retainMap.put(regionStateNode.getRegionInfo(), regionStateNode.getRegionLocation());<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span>      } else {<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span>        hris.add(regionStateNode.getRegionInfo());<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span>      }<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span>    }<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span><a name="line.1706"></a>
-<span class="sourceLineNo">1707</span>    // TODO: connect with the listener to invalidate the cache<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span><a name="line.1708"></a>
-<span class="sourceLineNo">1709</span>    // TODO use events<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span>    List&lt;ServerName&gt; servers = master.getServerManager().createDestinationServersList();<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span>    for (int i = 0; servers.size() &lt; 1; ++i) {<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span>      // Report every fourth time around this loop; try not to flood log.<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span>      if (i % 4 == 0) {<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span>        LOG.warn("No servers available; cannot place " + regions.size() + " unassigned regions.");<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>      }<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span><a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>      if (!isRunning()) {<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span>        LOG.debug("Stopped! Dropping assign of " + regions.size() + " queued regions.");<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>        return;<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span>      }<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span>      Threads.sleep(250);<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span>      servers = master.getServerManager().createDestinationServersList();<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>    }<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span><a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>    if (!systemHRIs.isEmpty()) {<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span>      // System table regions requiring reassignment are present, get region servers<a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>      // not available for system table regions<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span>      final List&lt;ServerName&gt; excludeServers = getExcludedServersForSystemTable();<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>      List&lt;ServerName&gt; serversForSysTables = servers.stream()<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>          .filter(s -&gt; !excludeServers.contains(s)).collect(Collectors.toList());<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>      if (serversForSysTables.isEmpty()) {<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>        LOG.warn("Filtering old server versions and the excluded produced an empty set; " +<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span>            "instead considering all candidate servers!");<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span>      }<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span>      LOG.debug("Processing assignQueue; systemServersCount=" + serversForSysTables.size() +<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>          ", allServersCount=" + servers.size());<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>      processAssignmentPlans(regions, null, systemHRIs,<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span>          serversForSysTables.isEmpty()? servers: serversForSysTables);<a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>    }<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span><a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>    processAssignmentPlans(regions, retainMap, userHRIs, servers);<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span>  }<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span><a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>  private void processAssignmentPlans(final HashMap&lt;RegionInfo, RegionStateNode&gt; regions,<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>      final HashMap&lt;RegionInfo, ServerName&gt; retainMap, final List&lt;RegionInfo&gt; hris,<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span>      final List&lt;ServerName&gt; servers) {<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span>    boolean isTraceEnabled = LOG.isTraceEnabled();<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>    if (isTraceEnabled) {<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span>      LOG.trace("Available servers count=" + servers.size() + ": " + servers);<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span>    }<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span><a name="line.1751"></a>
-<span class="sourceLineNo">1752</span>    final LoadBalancer balancer = getBalancer();<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span>    // ask the balancer where to place regions<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span>    if (retainMap != null &amp;&amp; !retainMap.isEmpty()) {<a name="line.1754"></a>
-<span class="sourceLineNo">1755</span>      if (isTraceEnabled) {<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span>        LOG.trace("retain assign regions=" + retainMap);<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span>      }<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span>      try {<a name="line.1758"></a>
-<span class="sourceLineNo">1759</span>        acceptPlan(regions, balancer.retainAssignment(retainMap, servers));<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span>      } catch (HBaseIOException e) {<a name="line.1760"></a>
-<span class="sourceLineNo">1761</span>        LOG.warn("unable to retain assignment", e);<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span>        addToPendingAssignment(regions, retainMap.keySet());<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span>      }<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span>    }<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span><a name="line.1765"></a>
-<span class="sourceLineNo">1766</span>    // TODO: Do we need to split retain and round-robin?<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span>    // the retain seems to fallback to round-robin/random if the region is not in the map.<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span>    if (!hris.isEmpty()) {<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span>      Collections.sort(hris, RegionInfo.COMPARATOR);<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span>      if (isTraceEnabled) {<a name="line.1770"></a>
-<span class="sourceLineNo">1771</span>        LOG.trace("round robin regions=" + hris);<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span>      }<a name="line.1772"></a>
-<span class="sourceLineNo">1773</span>      try {<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span>        acceptPlan(regions, balancer.roundRobinAssignment(hris, servers));<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span>      } catch (HBaseIOException e) {<a name="line.1775"></a>
-<span class="sourceLineNo">1776</span>        LOG.warn("unable to round-robin assignment", e);<a name="line.1776"></a>
-<span class="sourceLineNo">1777</span>        addToPendingAssignment(regions, hris);<a name="line.1777"></a>
-<span class="sourceLineNo">1778</span>      }<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span>    }<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span>  }<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span><a name="line.1781"></a>
-<span class="sourceLineNo">1782</span>  private void acceptPlan(final HashMap&lt;RegionInfo, RegionStateNode&gt; regions,<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span>      final Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; plan) throws HBaseIOException {<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span>    final ProcedureEvent&lt;?&gt;[] events = new ProcedureEvent[regions.size()];<a name="line.1784"></a>
-<span class="sourceLineNo">1785</span>    final long st = System.currentTimeMillis();<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span><a name="line.1786"></a>
-<span class="sourceLineNo">1787</span>    if (plan == null) {<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span>      throw new HBaseIOException("unable to compute plans for regions=" + regions.size());<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span>    }<a name="line.1789"></a>
-<span class="sourceLineNo">1790</span><a name="line.1790"></a>
-<span class="sourceLineNo">1791</span>    if (plan.isEmpty()) return;<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span><a name="line.1792"></a>
-<span class="sourceLineNo">1793</span>    int evcount = 0;<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span>    for (Map.Entry&lt;ServerName, List&lt;RegionInfo&gt;&gt; entry: plan.entrySet()) {<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span>      final ServerName server = entry.getKey();<a name="line.1795"></a>
-<span class="sourceLineNo">1796</span>      for (RegionInfo hri: entry.getValue()) {<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span>        final RegionStateNode regionNode = regions.get(hri);<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span>        regionNode.setRegionLocation(server);<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span>        events[evcount++] = regionNode.getProcedureEvent();<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span>      }<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span>    }<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span>    ProcedureEvent.wakeEvents(getProcedureScheduler(), events);<a name="line.1802"></a>
-<span class="sourceLineNo">1803</span><a name="line.1803"></a>
-<span class="sourceLineNo">1804</span>    final long et = System.currentTimeMillis();<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span>    if (LOG.isTraceEnabled()) {<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span>      LOG.trace("ASSIGN ACCEPT " + events.length + " -&gt; " +<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span>          StringUtils.humanTimeDiff(et - st));<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span>    }<a name="line.1808"></a>
-<span class="sourceLineNo">1809</span>  }<a name="line.1809"></a>
-<span class="sourceLineNo">1810</span><a name="line.1810"></a>
-<span class="sourceLineNo">1811</span>  private void addToPendingAssignment(final HashMap&lt;RegionInfo, RegionStateNode&gt; regions,<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span>      final Collection&lt;RegionInfo&gt; pendingRegions) {<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span>    assignQueueLock.lock();<a name="line.1813"></a>
-<span class="sourceLineNo">1814</span>    try {<a name="line.1814"></a>
-<span class="sourceLineNo">1815</span>      for (RegionInfo hri: pendingRegions) {<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span>        pendingAssignQueue.add(regions.get(hri));<a name="line.1816"></a>
-<span class="sourceLineNo">1817</span>      }<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span>    } finally {<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span>      assignQueueLock.unlock();<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span>    }<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span>  }<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span><a name="line.1822"></a>
-<span class="sourceLineNo">1823</span>  /**<a name="line.1823"></a>
-<span class="sourceLineNo">1824</span>   * Get a list of servers that this region cannot be assigned to.<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span>   * For system tables, we must assign them to a server with highest version.<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span>   */<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span>  public List&lt;ServerName&gt; getExcludedServersForSystemTable() {<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span>    // TODO: This should be a cached list kept by the ServerManager rather than calculated on each<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span>    // move or system region assign. The RegionServerTracker keeps list of online Servers with<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span>    // RegionServerInfo that includes Version.<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span>    List&lt;Pair&lt;ServerName, String&gt;&gt; serverList = master.getServerManager().getOnlineServersList()<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span>        .stream()<a name="line.1832"></a>
-<span class="sourceLineNo">1833</span>        .map((s)-&gt;new Pair&lt;&gt;(s, master.getRegionServerVersion(s)))<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span>        .collect(Collectors.toList());<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span>    if (serverList.isEmpty()) {<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span>      return Collections.emptyList();<a name="line.1836"></a>
-<span class="sourceLineNo">1837</span>    }<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span>    String highestVersion = Collections.max(serverList,<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span>        (o1, o2) -&gt; VersionInfo.compareVersion(o1.getSecond(), o2.getSecond())).getSecond();<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span>    return serverList.stream()<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span>        .filter((p)-&gt;!p.getSecond().equals(highestVersion))<a name="line.1841"></a>
-<span class="sourceLineNo">1842</span>        .map(Pair::getFirst)<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span>        .collect(Collectors.toList());<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span>  }<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span><a name="line.1845"></a>
-<span class="sourceLineNo">1846</span>  // ============================================================================================<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span>  //  Server Helpers<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span>  // ============================================================================================<a name="line.1848"></a>
-<span class="sourceLineNo">1849</span>  @Override<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span>  public void serverAdded(final ServerName serverName) {<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span>  }<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span><a name="line.1852"></a>
-<span class="sourceLineNo">1853</span>  @Override<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span>  public void serverRemoved(final ServerName serverName) {<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span>    final ServerStateNode serverNode = regionStates.getServerNode(serverName);<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span>    if (serverNode == null) return;<a name="line.1856"></a>
-<span class="sourceLineNo">1857</span><a name="line.1857"></a>
-<span class="sourceLineNo">1858</span>    // just in case, wake procedures waiting for this server report<a name="line.1858"></a>
-<span class="sourceLineNo">1859</span>    wakeServerReportEvent(serverNode);<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span>  }<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span><a name="line.1861"></a>
-<span class="sourceLineNo">1862</span>  private void killRegionServer(final ServerStateNode serverNode) {<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span>    master.getServerManager().expireServer(serverNode.getServerName());<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span>  }<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span><a name="line.1865"></a>
-<span class="sourceLineNo">1866</span>  @VisibleForTesting<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span>  MasterServices getMaster() {<a name="line.1867"></a>
-<span class="sourceLineNo">1868</span>    return master;<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span>  }<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span>}<a name="line.1870"></a>
+<span class="sourceLineNo">1213</span>    // Scan hbase:meta to build list of existing regions, servers, and assignment.<a name="line.1213"></a>
+<span class="sourceLineNo">1214</span>    // hbase:meta is online now or will be. Inside loadMeta, we keep trying. Can't make progress<a name="line.1214"></a>
+<span class="sourceLineNo">1215</span>    // w/o  meta.<a name="line.1215"></a>
+<span class="sourceLineNo">1216</span>    loadMeta();<a name="line.1216"></a>
+<span class="sourceLineNo">1217</span><a name="line.1217"></a>
+<span class="sourceLineNo">1218</span>    while (master.getServerManager().countOfRegionServers() &lt; 1) {<a name="line.1218"></a>
+<span class="sourceLineNo">1219</span>      LOG.info("Waiting for RegionServers to join; current count={}",<a name="line.1219"></a>
+<span class="sourceLineNo">1220</span>        master.getServerManager().countOfRegionServers());<a name="line.1220"></a>
+<span class="sourceLineNo">1221</span>      Threads.sleep(250);<a name="line.1221"></a>
+<span class="sourceLineNo">1222</span>    }<a name="line.1222"></a>
+<span class="sourceLineNo">1223</span>    LOG.info("Number of RegionServers={}", master.getServerManager().countOfRegionServers());<a name="line.1223"></a>
+<span class="sourceLineNo">1224</span><a name="line.1224"></a>
+<span class="sourceLineNo">1225</span>    processOfflineRegions();<a name="line.1225"></a>
+<span class="sourceLineNo">1226</span><a name="line.1226"></a>
+<span class="sourceLineNo">1227</span>    // Start the RIT chore<a name="line.1227"></a>
+<span class="sourceLineNo">1228</span>    master.getMasterProcedureExecutor().addChore(this.ritChore);<a name="line.1228"></a>
+<span class="sourceLineNo">1229</span><a name="line.1229"></a>
+<span class="sourceLineNo">1230</span>    long costMs = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startTime);<a name="line.1230"></a>
+<span class="sourceLineNo">1231</span>    LOG.info("Joined the cluster in {}", StringUtils.humanTimeDiff(costMs));<a name="line.1231"></a>
+<span class="sourceLineNo">1232</span>  }<a name="line.1232"></a>
+<span class="sourceLineNo">1233</span><a name="line.1233"></a>
+<span class="sourceLineNo">1234</span>  // Create assign procedure for offline regions.<a name="line.1234"></a>
+<span class="sourceLineNo">1235</span>  // Just follow the old processofflineServersWithOnlineRegions method. Since now we do not need to<a name="line.1235"></a>
+<span class="sourceLineNo">1236</span>  // deal with dead server any more, we only deal with the regions in OFFLINE state in this method.<a name="line.1236"></a>
+<span class="sourceLineNo">1237</span>  // And this is a bit strange, that for new regions, we will add it in CLOSED state instead of<a name="line.1237"></a>
+<span class="sourceLineNo">1238</span>  // OFFLINE state, and usually there will be a procedure to track them. The<a name="line.1238"></a>
+<span class="sourceLineNo">1239</span>  // processofflineServersWithOnlineRegions is a legacy from long ago, as things are going really<a name="line.1239"></a>
+<span class="sourceLineNo">1240</span>  // different now, maybe we do not need this method any more. Need to revisit later.<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>  private void processOfflineRegions() {<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>    List&lt;RegionInfo&gt; offlineRegions = regionStates.getRegionStates().stream()<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>      .filter(RegionState::isOffline).filter(s -&gt; isTableEnabled(s.getRegion().getTable()))<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span>      .map(RegionState::getRegion).collect(Collectors.toList());<a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>    if (!offlineRegions.isEmpty()) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>      master.getMasterProcedureExecutor().submitProcedures(<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>        master.getAssignmentManager().createRoundRobinAssignProcedures(offlineRegions));<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>    }<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>  }<a name="line.1249"></a>
+<span class="sourceLineNo">1250</span><a name="line.1250"></a>
+<span class="sourceLineNo">1251</span>  private void loadMeta() throws IOException {<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>    // TODO: use a thread pool<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span>    regionStateStore.visitMeta(new RegionStateStore.RegionStateVisitor() {<a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>      @Override<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>      public void visitRegionState(Result result, final RegionInfo regionInfo, final State state,<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span>          final ServerName regionLocation, final ServerName lastHost, final long openSeqNum) {<a name="line.1256"></a>
+<span class="sourceLineNo">1257</span>        if (state == null &amp;&amp; regionLocation == null &amp;&amp; lastHost == null &amp;&amp;<a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>            openSeqNum == SequenceId.NO_SEQUENCE_ID) {<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>          // This is a row with nothing in it.<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>          LOG.warn("Skipping empty row={}", result);<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>          return;<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>        }<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>        State localState = state;<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>        if (localState == null) {<a name="line.1264"></a>
+<span class="sourceLineNo">1265</span>          // No region state column data in hbase:meta table! Are I doing a rolling upgrade from<a name="line.1265"></a>
+<span class="sourceLineNo">1266</span>          // hbase1 to hbase2? Am I restoring a SNAPSHOT or otherwise adding a region to hbase:meta?<a name="line.1266"></a>
+<span class="sourceLineNo">1267</span>          // In any of these cases, state is empty. For now, presume OFFLINE but there are probably<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>          // cases where we need to probe more to be sure this correct; TODO informed by experience.<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>          LOG.info(regionInfo.getEncodedName() + " regionState=null; presuming " + State.OFFLINE);<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span><a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>          localState = State.OFFLINE;<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span>        }<a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>        RegionStateNode regionNode = regionStates.getOrCreateRegionStateNode(regionInfo);<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>        // Do not need to lock on regionNode, as we can make sure that before we finish loading<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>        // meta, all the related procedures can not be executed. The only exception is formeta<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span>        // region related operations, but here we do not load the informations for meta region.<a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>        regionNode.setState(localState);<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>        regionNode.setLastHost(lastHost);<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>        regionNode.setRegionLocation(regionLocation);<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>        regionNode.setOpenSeqNum(openSeqNum);<a name="line.1280"></a>
+<span class="sourceLineNo">1281</span><a name="line.1281"></a>
+<span class="sourceLineNo">1282</span>        if (localState == State.OPEN) {<a name="line.1282"></a>
+<span class="sourceLineNo">1283</span>          assert regionLocation != null : "found null region location for " + regionNode;<a name="line.1283"></a>
+<span class="sourceLineNo">1284</span>          regionStates.addRegionToServer(regionNode);<a name="line.1284"></a>
+<span class="sourceLineNo">1285</span>        } else if (localState == State.OFFLINE || regionInfo.isOffline()) {<a name="line.1285"></a>
+<span class="sourceLineNo">1286</span>          regionStates.addToOfflineRegions(regionNode);<a name="line.1286"></a>
+<span class="sourceLineNo">1287</span>        }<a name="line.1287"></a>
+<span class="sourceLineNo">1288</span>      }<a name="line.1288"></a>
+<span class="sourceLineNo">1289</span>    });<a name="line.1289"></a>
+<span class="sourceLineNo">1290</span><a name="line.1290"></a>
+<span class="sourceLineNo">1291</span>    // every assignment is blocked until meta is loaded.<a name="line.1291"></a>
+<span class="sourceLineNo">1292</span>    wakeMetaLoadedEvent();<a name="line.1292"></a>
+<span class="sourceLineNo">1293</span>  }<a name="line.1293"></a>
+<span class="sourceLineNo">1294</span><a name="line.1294"></a>
+<span class="sourceLineNo">1295</span>  /**<a name="line.1295"></a>
+<span class="sourceLineNo">1296</span>   * Used to check if the meta loading is done.<a name="line.1296"></a>
+<span class="sourceLineNo">1297</span>   * &lt;p/&gt;<a name="line.1297"></a>
+<span class="sourceLineNo">1298</span>   * if not we throw PleaseHoldException since we are rebuilding the RegionStates<a name="line.1298"></a>
+<span class="sourceLineNo">1299</span>   * @param hri region to check if it is already rebuild<a name="line.1299"></a>
+<span class="sourceLineNo">1300</span>   * @throws PleaseHoldException if meta has not been loaded yet<a name="line.1300"></a>
+<span class="sourceLineNo">1301</span>   */<a name="line.1301"></a>
+<span class="sourceLineNo">1302</span>  private void checkMetaLoaded(RegionInfo hri) throws PleaseHoldException {<a name="line.1302"></a>
+<span class="sourceLineNo">1303</span>    if (!isRunning()) {<a name="line.1303"></a>
+<span class="sourceLineNo">1304</span>      throw new PleaseHoldException("AssignmentManager not running");<a name="line.1304"></a>
+<span class="sourceLineNo">1305</span>    }<a name="line.1305"></a>
+<span class="sourceLineNo">1306</span>    boolean meta = isMetaRegion(hri);<a name="line.1306"></a>
+<span class="sourceLineNo">1307</span>    boolean metaLoaded = isMetaLoaded();<a name="line.1307"></a>
+<span class="sourceLineNo">1308</span>    if (!meta &amp;&amp; !metaLoaded) {<a name="line.1308"></a>
+<span class="sourceLineNo">1309</span>      throw new PleaseHoldException(<a name="line.1309"></a>
+<span class="sourceLineNo">1310</span>        "Master not fully online; hbase:meta=" + meta + ", metaLoaded=" + metaLoaded);<a name="line.1310"></a>
+<span class="sourceLineNo">1311</span>    }<a name="line.1311"></a>
+<span class="sourceLineNo">1312</span>  }<a name="line.1312"></a>
+<span class="sourceLineNo">1313</span><a name="line.1313"></a>
+<span class="sourceLineNo">1314</span>  // ============================================================================================<a name="line.1314"></a>
+<span class="sourceLineNo">1315</span>  //  TODO: Metrics<a name="line.1315"></a>
+<span class="sourceLineNo">1316</span>  // ============================================================================================<a name="line.1316"></a>
+<span class="sourceLineNo">1317</span>  public int getNumRegionsOpened() {<a name="line.1317"></a>
+<span class="sourceLineNo">1318</span>    // TODO: Used by TestRegionPlacement.java and assume monotonically increasing value<a name="line.1318"></a>
+<span class="sourceLineNo">1319</span>    return 0;<a name="line.1319"></a>
+<span class="sourceLineNo">1320</span>  }<a name="line.1320"></a>
+<span class="sourceLineNo">1321</span><a name="line.1321"></a>
+<span class="sourceLineNo">1322</span>  public void submitServerCrash(final ServerName serverName, final boolean shouldSplitWal) {<a name="line.1322"></a>
+<span class="sourceLineNo">1323</span>    boolean carryingMeta = isCarryingMeta(serverName);<a name="line.1323"></a>
+<span class="sourceLineNo">1324</span>    ProcedureExecutor&lt;MasterProcedureEnv&gt; procExec = this.master.getMasterProcedureExecutor();<a name="line.1324"></a>
+<span class="sourceLineNo">1325</span>    procExec.submitProcedure(new ServerCrashProcedure(procExec.getEnvironment(), serverName,<a name="line.1325"></a>
+<span class="sourceLineNo">1326</span>      shouldSplitWal, carryingMeta));<a name="line.1326"></a>
+<span class="sourceLineNo">1327</span>    LOG.debug("Added=" + serverName +<a name="line.1327"></a>
+<span class="sourceLineNo">1328</span>      " to dead servers, submitted shutdown handler to be executed meta=" + carryingMeta);<a name="line.1328"></a>
+<span class="sourceLineNo">1329</span>  }<a name="line.1329"></a>
+<span class="sourceLineNo">1330</span><a name="line.1330"></a>
+<span class="sourceLineNo">1331</span>  public void offlineRegion(final RegionInfo regionInfo) {<a name="line.1331"></a>
+<span class="sourceLineNo">1332</span>    // TODO used by MasterRpcServices<a name="line.1332"></a>
+<span class="sourceLineNo">1333</span>    RegionStateNode node = regionStates.getRegionStateNode(regionInfo);<a name="line.1333"></a>
+<span class="sourceLineNo">1334</span>    if (node != null) {<a name="line.1334"></a>
+<span class="sourceLineNo">1335</span>      node.offline();<a name="line.1335"></a>
+<span class="sourceLineNo">1336</span>    }<a name="line.1336"></a>
+<span class="sourceLineNo">1337</span>  }<a name="line.1337"></a>
+<span class="sourceLineNo">1338</span><a name="line.1338"></a>
+<span class="sourceLineNo">1339</span>  public void onlineRegion(final RegionInfo regionInfo, final ServerName serverName) {<a name="line.1339"></a>
+<span class="sourceLineNo">1340</span>    // TODO used by TestSplitTransactionOnCluster.java<a name="line.1340"></a>
+<span class="sourceLineNo">1341</span>  }<a name="line.1341"></a>
+<span class="sourceLineNo">1342</span><a name="line.1342"></a>
+<span class="sourceLineNo">1343</span>  public Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; getSnapShotOfAssignment(<a name="line.1343"></a>
+<span class="sourceLineNo">1344</span>      final Collection&lt;RegionInfo&gt; regions) {<a name="line.1344"></a>
+<span class="sourceLineNo">1345</span>    return regionStates.getSnapShotOfAssignment(regions);<a name="line.1345"></a>
+<span class="sourceLineNo">1346</span>  }<a name="line.1346"></a>
+<span class="sourceLineNo">1347</span><a name="line.1347"></a>
+<span class="sourceLineNo">1348</span>  // ============================================================================================<a name="line.1348"></a>
+<span class="sourceLineNo">1349</span>  //  TODO: UTILS/HELPERS?<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span>  // ============================================================================================<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span>  /**<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span>   * Used by the client (via master) to identify if all regions have the schema updates<a name="line.1352"></a>
+<span class="sourceLineNo">1353</span>   *<a name="line.1353"></a>
+<span class="sourceLineNo">1354</span>   * @param tableName<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span>   * @return Pair indicating the status of the alter command (pending/total)<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span>   * @throws IOException<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span>   */<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span>  public Pair&lt;Integer, Integer&gt; getReopenStatus(TableName tableName) {<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span>    if (isTableDisabled(tableName)) return new Pair&lt;Integer, Integer&gt;(0, 0);<a name="line.1359"></a>
+<span class="sourceLineNo">1360</span><a name="line.1360"></a>
+<span class="sourceLineNo">1361</span>    final List&lt;RegionState&gt; states = regionStates.getTableRegionStates(tableName);<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span>    int ritCount = 0;<a name="line.1362"></a>
+<span class="sourceLineNo">1363</span>    for (RegionState regionState: states) {<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span>      if (!regionState.isOpened()) ritCount++;<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span>    }<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span>    return new Pair&lt;Integer, Integer&gt;(ritCount, states.size());<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span>  }<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span><a name="line.1368"></a>
+<span class="sourceLineNo">1369</span>  // ============================================================================================<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span>  //  TODO: Region State In Transition<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span>  // ============================================================================================<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span>  public boolean hasRegionsInTransition() {<a name="line.1372"></a>
+<span class="sourceLineNo">1373</span>    return regionStates.hasRegionsInTransition();<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span>  }<a name="line.1374"></a>
+<span class="sourceLineNo">1375</span><a name="line.1375"></a>
+<span class="sourceLineNo">1376</span>  public List&lt;RegionStateNode&gt; getRegionsInTransition() {<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span>    return regionStates.getRegionsInTransition();<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span>  }<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span><a name="line.1379"></a>
+<span class="sourceLineNo">1380</span>  public List&lt;RegionInfo&gt; getAssignedRegions() {<a name="line.1380"></a>
+<span class="sourceLineNo">1381</span>    return regionStates.getAssignedRegions();<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span>  }<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span><a name="line.1383"></a>
+<span class="sourceLineNo">1384</span>  public RegionInfo getRegionInfo(final byte[] regionName) {<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span>    final RegionStateNode regionState = regionStates.getRegionStateNodeFromName(regionName);<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span>    return regionState != null ? regionState.getRegionInfo() : null;<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span>  }<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span><a name="line.1388"></a>
+<span class="sourceLineNo">1389</span>  // ============================================================================================<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span>  //  Expected states on region state transition.<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span>  //  Notice that there is expected

<TRUNCATED>

[26/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
index d2da8f4..27235ad 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
@@ -63,3784 +63,3870 @@
 <span class="sourceLineNo">055</span>import javax.servlet.http.HttpServlet;<a name="line.55"></a>
 <span class="sourceLineNo">056</span>import javax.servlet.http.HttpServletRequest;<a name="line.56"></a>
 <span class="sourceLineNo">057</span>import javax.servlet.http.HttpServletResponse;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.commons.lang3.StringUtils;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.conf.Configuration;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.Path;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.ChoreService;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HConstants;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.ServerName;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableName;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.Result;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.MoveRegionProcedure;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.RegionStateNode;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.assignment.UnassignProcedure;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.master.replication.SyncReplicationReplayWALManager;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.master.replication.TransitPeerSyncReplicationStateProcedure;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.quotas.MasterQuotasObserver;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.replication.SyncReplicationState;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.util.HBaseFsck;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.zookeeper.KeeperException;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.eclipse.jetty.server.Server;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>import org.slf4j.Logger;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>import org.slf4j.LoggerFactory;<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.224"></a>
-<span class="sourceLineNo">225</span><a name="line.225"></a>
-<span class="sourceLineNo">226</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.228"></a>
-<span class="sourceLineNo">229</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.230"></a>
-<span class="sourceLineNo">231</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.234"></a>
-<span class="sourceLineNo">235</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.235"></a>
-<span class="sourceLineNo">236</span> * run the cluster.  All others park themselves in their constructor until<a name="line.236"></a>
-<span class="sourceLineNo">237</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.237"></a>
-<span class="sourceLineNo">238</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.238"></a>
-<span class="sourceLineNo">239</span> *<a name="line.239"></a>
-<span class="sourceLineNo">240</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.240"></a>
-<span class="sourceLineNo">241</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.241"></a>
-<span class="sourceLineNo">242</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.242"></a>
-<span class="sourceLineNo">243</span> *<a name="line.243"></a>
-<span class="sourceLineNo">244</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.244"></a>
-<span class="sourceLineNo">245</span> *<a name="line.245"></a>
-<span class="sourceLineNo">246</span> * @see org.apache.zookeeper.Watcher<a name="line.246"></a>
-<span class="sourceLineNo">247</span> */<a name="line.247"></a>
-<span class="sourceLineNo">248</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.248"></a>
-<span class="sourceLineNo">249</span>@SuppressWarnings("deprecation")<a name="line.249"></a>
-<span class="sourceLineNo">250</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<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>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  private static class InitializationMonitor extends HasThread {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.263"></a>
-<span class="sourceLineNo">264</span>     * true, do nothing otherwise.<a name="line.264"></a>
-<span class="sourceLineNo">265</span>     */<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    public static final boolean HALT_DEFAULT = false;<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    private final HMaster master;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    private final long timeout;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    private final boolean haltOnTimeout;<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    InitializationMonitor(HMaster master) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      super("MasterInitializationMonitor");<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      this.master = master;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      this.setDaemon(true);<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>    @Override<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    public void run() {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      try {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>          Thread.sleep(timeout);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          if (master.isInitialized()) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          } else {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.290"></a>
-<span class="sourceLineNo">291</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.291"></a>
-<span class="sourceLineNo">292</span>            if (haltOnTimeout) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.293"></a>
-<span class="sourceLineNo">294</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.294"></a>
-<span class="sourceLineNo">295</span>              System.exit(-1);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>            }<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      } catch (InterruptedException ie) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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><a name="line.304"></a>
-<span class="sourceLineNo">305</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  //instance into web context.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  public static final String MASTER = "master";<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  // Manager and zk listener for master election<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  private final ActiveMasterManager activeMasterManager;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  // Region server tracker<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  private RegionServerTracker regionServerTracker;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  // Draining region server tracker<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  private DrainingServerTracker drainingServerTracker;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  // Tracker for load balancer state<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>  // Tracker for split and merge state<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.323"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.commons.lang3.StringUtils;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.conf.Configuration;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.fs.Path;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ChoreService;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HConstants;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.ServerName;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableName;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.Result;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.MoveRegionProcedure;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.assignment.RegionStateNode;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.assignment.UnassignProcedure;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.master.replication.SyncReplicationReplayWALManager;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.master.replication.TransitPeerSyncReplicationStateProcedure;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.quotas.MasterQuotasObserver;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.replication.SyncReplicationState;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.util.HBaseFsck;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.util.RetryCounterFactory;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>import org.apache.zookeeper.KeeperException;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.eclipse.jetty.server.Server;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>import org.slf4j.Logger;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>import org.slf4j.LoggerFactory;<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.225"></a>
+<span class="sourceLineNo">226</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.233"></a>
+<span class="sourceLineNo">234</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>/**<a name="line.236"></a>
+<span class="sourceLineNo">237</span> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.237"></a>
+<span class="sourceLineNo">238</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.238"></a>
+<span class="sourceLineNo">239</span> * run the cluster.  All others park themselves in their constructor until<a name="line.239"></a>
+<span class="sourceLineNo">240</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.240"></a>
+<span class="sourceLineNo">241</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.241"></a>
+<span class="sourceLineNo">242</span> *<a name="line.242"></a>
+<span class="sourceLineNo">243</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.243"></a>
+<span class="sourceLineNo">244</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.244"></a>
+<span class="sourceLineNo">245</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.245"></a>
+<span class="sourceLineNo">246</span> *<a name="line.246"></a>
+<span class="sourceLineNo">247</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.247"></a>
+<span class="sourceLineNo">248</span> *<a name="line.248"></a>
+<span class="sourceLineNo">249</span> * @see org.apache.zookeeper.Watcher<a name="line.249"></a>
+<span class="sourceLineNo">250</span> */<a name="line.250"></a>
+<span class="sourceLineNo">251</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.251"></a>
+<span class="sourceLineNo">252</span>@SuppressWarnings("deprecation")<a name="line.252"></a>
+<span class="sourceLineNo">253</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<a name="line.254"></a>
+<span class="sourceLineNo">255</span><a name="line.255"></a>
+<span class="sourceLineNo">256</span>  /**<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   */<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  private static class InitializationMonitor extends HasThread {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     * true, do nothing otherwise.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     */<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    public static final boolean HALT_DEFAULT = false;<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span>    private final HMaster master;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    private final long timeout;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    private final boolean haltOnTimeout;<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    InitializationMonitor(HMaster master) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      super("MasterInitializationMonitor");<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      this.master = master;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      this.setDaemon(true);<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 void run() {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      try {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>          Thread.sleep(timeout);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>          if (master.isInitialized()) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          } else {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.293"></a>
+<span class="sourceLineNo">294</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            if (haltOnTimeout) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.296"></a>
+<span class="sourceLineNo">297</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.297"></a>
+<span class="sourceLineNo">298</span>              System.exit(-1);<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>        }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      } catch (InterruptedException ie) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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>  }<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  //instance into web context.<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  public static final String MASTER = "master";<a name="line.310"></a>
+<span class="sourceLineNo">311</span><a name="line.311"></a>
+<span class="sourceLineNo">312</span>  // Manager and zk listener for master election<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  private final ActiveMasterManager activeMasterManager;<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  // Region server tracker<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  private RegionServerTracker regionServerTracker;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  // Draining region server tracker<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private DrainingServerTracker drainingServerTracker;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  // Tracker for load balancer state<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.323"></a>
 <span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  // Tracker for region normalizer state<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.326"></a>
+<span class="sourceLineNo">325</span>  // Tracker for split and merge state<a name="line.325"></a>
+<span class="sourceLineNo">326</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.326"></a>
 <span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  //Tracker for master maintenance mode setting<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.329"></a>
+<span class="sourceLineNo">328</span>  // Tracker for region normalizer state<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.329"></a>
 <span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  private ClusterSchemaService clusterSchemaService;<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    "hbase.master.wait.on.service.seconds";<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>  // Metrics for the HMaster<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  final MetricsMaster metricsMaster;<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  // file system manager for the master FS operations<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  private MasterFileSystem fileSystemManager;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  private MasterWalManager walManager;<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>  // server manager to deal with region server info<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  private volatile ServerManager serverManager;<a name="line.344"></a>
+<span class="sourceLineNo">331</span>  //Tracker for master maintenance mode setting<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>  private ClusterSchemaService clusterSchemaService;<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    "hbase.master.wait.on.service.seconds";<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>  // Metrics for the HMaster<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  final MetricsMaster metricsMaster;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  // file system manager for the master FS operations<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  private MasterFileSystem fileSystemManager;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  private MasterWalManager walManager;<a name="line.344"></a>
 <span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  // manager of assignment nodes in zookeeper<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private AssignmentManager assignmentManager;<a name="line.347"></a>
+<span class="sourceLineNo">346</span>  // server manager to deal with region server info<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  private volatile ServerManager serverManager;<a name="line.347"></a>
 <span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  // manager of replication<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.350"></a>
+<span class="sourceLineNo">349</span>  // manager of assignment nodes in zookeeper<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  private AssignmentManager assignmentManager;<a name="line.350"></a>
 <span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  private SyncReplicationReplayWALManager syncReplicationReplayWALManager;<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span>  // buffer for "fatal error" notices from region servers<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  // in the cluster. This is only used for assisting<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  // operations/debugging.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>  // flag set after we become the active master (used for testing)<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  private volatile boolean activeMaster = false;<a name="line.360"></a>
+<span class="sourceLineNo">352</span>  // manager of replication<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  private SyncReplicationReplayWALManager syncReplicationReplayWALManager;<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>  // buffer for "fatal error" notices from region servers<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  // in the cluster. This is only used for assisting<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  // operations/debugging.<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.360"></a>
 <span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // flag set after we complete initialization once active<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.363"></a>
+<span class="sourceLineNo">362</span>  // flag set after we become the active master (used for testing)<a name="line.362"></a>
+<span class="sourceLineNo">363</span>  private volatile boolean activeMaster = false;<a name="line.363"></a>
 <span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>  // flag set after master services are started,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  // initialization may have not completed yet.<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  volatile boolean serviceStarted = false;<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  // Maximum time we should run balancer for<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  private final int maxBlancingTime;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  // Maximum percent of regions in transition when balancing<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  private final double maxRitPercent;<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  private final LockManager lockManager = new LockManager(this);<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>  private LoadBalancer balancer;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  private RegionNormalizer normalizer;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  private BalancerChore balancerChore;<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  private RegionNormalizerChore normalizerChore;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  private ClusterStatusChore clusterStatusChore;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span>  CatalogJanitor catalogJanitorChore;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  private LogCleaner logCleaner;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  private HFileCleaner hfileCleaner;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  private MobCompactionChore mobCompactChore;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  // used to synchronize the mobCompactionStates<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  // save the information of mob compactions in tables.<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  MasterCoprocessorHost cpHost;<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  private final boolean preLoadTableDescriptors;<a name="line.398"></a>
-<span class="sourceLineNo">399</span><a name="line.399"></a>
-<span class="sourceLineNo">400</span>  // Time stamps for when a hmaster became active<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  private long masterActiveTime;<a name="line.401"></a>
+<span class="sourceLineNo">365</span>  // flag set after we complete initialization once active<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>  // flag set after master services are started,<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  // initialization may have not completed yet.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  volatile boolean serviceStarted = false;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  // Maximum time we should run balancer for<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  private final int maxBlancingTime;<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  // Maximum percent of regions in transition when balancing<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  private final double maxRitPercent;<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private final LockManager lockManager = new LockManager(this);<a name="line.377"></a>
+<span class="sourceLineNo">378</span><a name="line.378"></a>
+<span class="sourceLineNo">379</span>  private LoadBalancer balancer;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  private RegionNormalizer normalizer;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  private BalancerChore balancerChore;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  private RegionNormalizerChore normalizerChore;<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  private ClusterStatusChore clusterStatusChore;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  CatalogJanitor catalogJanitorChore;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>  private LogCleaner logCleaner;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>  private HFileCleaner hfileCleaner;<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  private MobCompactionChore mobCompactChore;<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  // used to synchronize the mobCompactionStates<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  // save the information of mob compactions in tables.<a name="line.395"></a>
+<span class="sourceLineNo">396</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.397"></a>
+<span class="sourceLineNo">398</span><a name="line.398"></a>
+<span class="sourceLineNo">399</span>  MasterCoprocessorHost cpHost;<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>  private final boolean preLoadTableDescriptors;<a name="line.401"></a>
 <span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  private long masterFinishedInitializationTime;<a name="line.404"></a>
+<span class="sourceLineNo">403</span>  // Time stamps for when a hmaster became active<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  private long masterActiveTime;<a name="line.404"></a>
 <span class="sourceLineNo">405</span><a name="line.405"></a>
-<span class="sourceLineNo">406</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private final boolean masterCheckCompression;<a name="line.407"></a>
+<span class="sourceLineNo">406</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  private long masterFinishedInitializationTime;<a name="line.407"></a>
 <span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  //should we check encryption settings at master side, default true<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private final boolean masterCheckEncryption;<a name="line.410"></a>
+<span class="sourceLineNo">409</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  private final boolean masterCheckCompression;<a name="line.410"></a>
 <span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  // monitor for snapshot of hbase tables<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  SnapshotManager snapshotManager;<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  // monitor for distributed procedures<a name="line.416"></a>
-<span class="sourceLineNo">417</span>  private MasterProcedureManagerHost mpmHost;<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  private volatile MasterQuotaManager quotaManager;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  private QuotaObserverChore quotaObserverChore;<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.423"></a>
-<span class="sourceLineNo">424</span><a name="line.424"></a>
-<span class="sourceLineNo">425</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  private WALProcedureStore procedureStore;<a name="line.426"></a>
+<span class="sourceLineNo">412</span>  //should we check encryption settings at master side, default true<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  private final boolean masterCheckEncryption;<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>  // monitor for snapshot of hbase tables<a name="line.417"></a>
+<span class="sourceLineNo">418</span>  SnapshotManager snapshotManager;<a name="line.418"></a>
+<span class="sourceLineNo">419</span>  // monitor for distributed procedures<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  private MasterProcedureManagerHost mpmHost;<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.422"></a>
+<span class="sourceLineNo">423</span>  private volatile MasterQuotaManager quotaManager;<a name="line.423"></a>
+<span class="sourceLineNo">424</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  private QuotaObserverChore quotaObserverChore;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.426"></a>
 <span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>  // handle table states<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  private TableStateManager tableStateManager;<a name="line.429"></a>
+<span class="sourceLineNo">428</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  private WALProcedureStore procedureStore;<a name="line.429"></a>
 <span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>  private long splitPlanCount;<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  private long mergePlanCount;<a name="line.432"></a>
+<span class="sourceLineNo">431</span>  // handle table states<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  private TableStateManager tableStateManager;<a name="line.432"></a>
 <span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span>  /* Handle favored nodes information */<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  private FavoredNodesManager favoredNodesManager;<a name="line.435"></a>
+<span class="sourceLineNo">434</span>  private long splitPlanCount;<a name="line.434"></a>
+<span class="sourceLineNo">435</span>  private long mergePlanCount;<a name="line.435"></a>
 <span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  private Server masterJettyServer;<a name="line.438"></a>
+<span class="sourceLineNo">437</span>  /* Handle favored nodes information */<a name="line.437"></a>
+<span class="sourceLineNo">438</span>  private FavoredNodesManager favoredNodesManager;<a name="line.438"></a>
 <span class="sourceLineNo">439</span><a name="line.439"></a>
-<span class="sourceLineNo">440</span>  public static class RedirectServlet extends HttpServlet {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    private final int regionServerInfoPort;<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    private final String regionServerHostname;<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>    /**<a name="line.445"></a>
-<span class="sourceLineNo">446</span>     * @param infoServer that we're trying to send all requests to<a name="line.446"></a>
-<span class="sourceLineNo">447</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.447"></a>
-<span class="sourceLineNo">448</span>     */<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>       regionServerInfoPort = infoServer.getPort();<a name="line.450"></a>
-<span class="sourceLineNo">451</span>       regionServerHostname = hostname;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    @Override<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    public void doGet(HttpServletRequest request,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      String redirectHost = regionServerHostname;<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      if(redirectHost == null) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        redirectHost = request.getServerName();<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.461"></a>
-<span class="sourceLineNo">462</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.462"></a>
-<span class="sourceLineNo">463</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.463"></a>
-<span class="sourceLineNo">464</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.464"></a>
-<span class="sourceLineNo">465</span>              "to an appropriate hostname.");<a name="line.465"></a>
-<span class="sourceLineNo">466</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.466"></a>
-<span class="sourceLineNo">467</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.467"></a>
-<span class="sourceLineNo">468</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.468"></a>
-<span class="sourceLineNo">469</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          return;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      String redirectUrl = request.getScheme() + "://"<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.476"></a>
-<span class="sourceLineNo">477</span>        + request.getRequestURI();<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      response.sendRedirect(redirectUrl);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    }<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>  /**<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * Initializes the HMaster. The steps are 

<TRUNCATED>

[28/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
index d2da8f4..27235ad 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
@@ -63,3784 +63,3870 @@
 <span class="sourceLineNo">055</span>import javax.servlet.http.HttpServlet;<a name="line.55"></a>
 <span class="sourceLineNo">056</span>import javax.servlet.http.HttpServletRequest;<a name="line.56"></a>
 <span class="sourceLineNo">057</span>import javax.servlet.http.HttpServletResponse;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.commons.lang3.StringUtils;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.conf.Configuration;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.Path;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.ChoreService;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HConstants;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.ServerName;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableName;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.Result;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.MoveRegionProcedure;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.RegionStateNode;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.assignment.UnassignProcedure;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.master.replication.SyncReplicationReplayWALManager;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.master.replication.TransitPeerSyncReplicationStateProcedure;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.quotas.MasterQuotasObserver;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.replication.SyncReplicationState;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.util.HBaseFsck;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.zookeeper.KeeperException;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.eclipse.jetty.server.Server;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>import org.slf4j.Logger;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>import org.slf4j.LoggerFactory;<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.224"></a>
-<span class="sourceLineNo">225</span><a name="line.225"></a>
-<span class="sourceLineNo">226</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.228"></a>
-<span class="sourceLineNo">229</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.230"></a>
-<span class="sourceLineNo">231</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.234"></a>
-<span class="sourceLineNo">235</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.235"></a>
-<span class="sourceLineNo">236</span> * run the cluster.  All others park themselves in their constructor until<a name="line.236"></a>
-<span class="sourceLineNo">237</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.237"></a>
-<span class="sourceLineNo">238</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.238"></a>
-<span class="sourceLineNo">239</span> *<a name="line.239"></a>
-<span class="sourceLineNo">240</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.240"></a>
-<span class="sourceLineNo">241</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.241"></a>
-<span class="sourceLineNo">242</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.242"></a>
-<span class="sourceLineNo">243</span> *<a name="line.243"></a>
-<span class="sourceLineNo">244</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.244"></a>
-<span class="sourceLineNo">245</span> *<a name="line.245"></a>
-<span class="sourceLineNo">246</span> * @see org.apache.zookeeper.Watcher<a name="line.246"></a>
-<span class="sourceLineNo">247</span> */<a name="line.247"></a>
-<span class="sourceLineNo">248</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.248"></a>
-<span class="sourceLineNo">249</span>@SuppressWarnings("deprecation")<a name="line.249"></a>
-<span class="sourceLineNo">250</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<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>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  private static class InitializationMonitor extends HasThread {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.263"></a>
-<span class="sourceLineNo">264</span>     * true, do nothing otherwise.<a name="line.264"></a>
-<span class="sourceLineNo">265</span>     */<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    public static final boolean HALT_DEFAULT = false;<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    private final HMaster master;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    private final long timeout;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    private final boolean haltOnTimeout;<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    InitializationMonitor(HMaster master) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      super("MasterInitializationMonitor");<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      this.master = master;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      this.setDaemon(true);<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>    @Override<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    public void run() {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      try {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>          Thread.sleep(timeout);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          if (master.isInitialized()) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          } else {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.290"></a>
-<span class="sourceLineNo">291</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.291"></a>
-<span class="sourceLineNo">292</span>            if (haltOnTimeout) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.293"></a>
-<span class="sourceLineNo">294</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.294"></a>
-<span class="sourceLineNo">295</span>              System.exit(-1);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>            }<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      } catch (InterruptedException ie) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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><a name="line.304"></a>
-<span class="sourceLineNo">305</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  //instance into web context.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  public static final String MASTER = "master";<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  // Manager and zk listener for master election<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  private final ActiveMasterManager activeMasterManager;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  // Region server tracker<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  private RegionServerTracker regionServerTracker;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  // Draining region server tracker<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  private DrainingServerTracker drainingServerTracker;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  // Tracker for load balancer state<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>  // Tracker for split and merge state<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.323"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.commons.lang3.StringUtils;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.conf.Configuration;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.fs.Path;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ChoreService;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HConstants;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.ServerName;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableName;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.Result;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.MoveRegionProcedure;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.assignment.RegionStateNode;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.assignment.UnassignProcedure;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.master.replication.SyncReplicationReplayWALManager;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.master.replication.TransitPeerSyncReplicationStateProcedure;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.quotas.MasterQuotasObserver;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.replication.SyncReplicationState;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.util.HBaseFsck;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.util.RetryCounterFactory;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>import org.apache.zookeeper.KeeperException;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.eclipse.jetty.server.Server;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>import org.slf4j.Logger;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>import org.slf4j.LoggerFactory;<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.225"></a>
+<span class="sourceLineNo">226</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.233"></a>
+<span class="sourceLineNo">234</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>/**<a name="line.236"></a>
+<span class="sourceLineNo">237</span> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.237"></a>
+<span class="sourceLineNo">238</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.238"></a>
+<span class="sourceLineNo">239</span> * run the cluster.  All others park themselves in their constructor until<a name="line.239"></a>
+<span class="sourceLineNo">240</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.240"></a>
+<span class="sourceLineNo">241</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.241"></a>
+<span class="sourceLineNo">242</span> *<a name="line.242"></a>
+<span class="sourceLineNo">243</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.243"></a>
+<span class="sourceLineNo">244</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.244"></a>
+<span class="sourceLineNo">245</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.245"></a>
+<span class="sourceLineNo">246</span> *<a name="line.246"></a>
+<span class="sourceLineNo">247</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.247"></a>
+<span class="sourceLineNo">248</span> *<a name="line.248"></a>
+<span class="sourceLineNo">249</span> * @see org.apache.zookeeper.Watcher<a name="line.249"></a>
+<span class="sourceLineNo">250</span> */<a name="line.250"></a>
+<span class="sourceLineNo">251</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.251"></a>
+<span class="sourceLineNo">252</span>@SuppressWarnings("deprecation")<a name="line.252"></a>
+<span class="sourceLineNo">253</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<a name="line.254"></a>
+<span class="sourceLineNo">255</span><a name="line.255"></a>
+<span class="sourceLineNo">256</span>  /**<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   */<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  private static class InitializationMonitor extends HasThread {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     * true, do nothing otherwise.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     */<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    public static final boolean HALT_DEFAULT = false;<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span>    private final HMaster master;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    private final long timeout;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    private final boolean haltOnTimeout;<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    InitializationMonitor(HMaster master) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      super("MasterInitializationMonitor");<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      this.master = master;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      this.setDaemon(true);<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 void run() {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      try {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>          Thread.sleep(timeout);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>          if (master.isInitialized()) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          } else {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.293"></a>
+<span class="sourceLineNo">294</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            if (haltOnTimeout) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.296"></a>
+<span class="sourceLineNo">297</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.297"></a>
+<span class="sourceLineNo">298</span>              System.exit(-1);<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>        }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      } catch (InterruptedException ie) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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>  }<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  //instance into web context.<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  public static final String MASTER = "master";<a name="line.310"></a>
+<span class="sourceLineNo">311</span><a name="line.311"></a>
+<span class="sourceLineNo">312</span>  // Manager and zk listener for master election<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  private final ActiveMasterManager activeMasterManager;<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  // Region server tracker<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  private RegionServerTracker regionServerTracker;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  // Draining region server tracker<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private DrainingServerTracker drainingServerTracker;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  // Tracker for load balancer state<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.323"></a>
 <span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  // Tracker for region normalizer state<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.326"></a>
+<span class="sourceLineNo">325</span>  // Tracker for split and merge state<a name="line.325"></a>
+<span class="sourceLineNo">326</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.326"></a>
 <span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  //Tracker for master maintenance mode setting<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.329"></a>
+<span class="sourceLineNo">328</span>  // Tracker for region normalizer state<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.329"></a>
 <span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  private ClusterSchemaService clusterSchemaService;<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    "hbase.master.wait.on.service.seconds";<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>  // Metrics for the HMaster<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  final MetricsMaster metricsMaster;<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  // file system manager for the master FS operations<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  private MasterFileSystem fileSystemManager;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  private MasterWalManager walManager;<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>  // server manager to deal with region server info<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  private volatile ServerManager serverManager;<a name="line.344"></a>
+<span class="sourceLineNo">331</span>  //Tracker for master maintenance mode setting<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>  private ClusterSchemaService clusterSchemaService;<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    "hbase.master.wait.on.service.seconds";<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>  // Metrics for the HMaster<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  final MetricsMaster metricsMaster;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  // file system manager for the master FS operations<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  private MasterFileSystem fileSystemManager;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  private MasterWalManager walManager;<a name="line.344"></a>
 <span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  // manager of assignment nodes in zookeeper<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private AssignmentManager assignmentManager;<a name="line.347"></a>
+<span class="sourceLineNo">346</span>  // server manager to deal with region server info<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  private volatile ServerManager serverManager;<a name="line.347"></a>
 <span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  // manager of replication<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.350"></a>
+<span class="sourceLineNo">349</span>  // manager of assignment nodes in zookeeper<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  private AssignmentManager assignmentManager;<a name="line.350"></a>
 <span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  private SyncReplicationReplayWALManager syncReplicationReplayWALManager;<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span>  // buffer for "fatal error" notices from region servers<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  // in the cluster. This is only used for assisting<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  // operations/debugging.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>  // flag set after we become the active master (used for testing)<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  private volatile boolean activeMaster = false;<a name="line.360"></a>
+<span class="sourceLineNo">352</span>  // manager of replication<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  private SyncReplicationReplayWALManager syncReplicationReplayWALManager;<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>  // buffer for "fatal error" notices from region servers<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  // in the cluster. This is only used for assisting<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  // operations/debugging.<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.360"></a>
 <span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // flag set after we complete initialization once active<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.363"></a>
+<span class="sourceLineNo">362</span>  // flag set after we become the active master (used for testing)<a name="line.362"></a>
+<span class="sourceLineNo">363</span>  private volatile boolean activeMaster = false;<a name="line.363"></a>
 <span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>  // flag set after master services are started,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  // initialization may have not completed yet.<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  volatile boolean serviceStarted = false;<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  // Maximum time we should run balancer for<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  private final int maxBlancingTime;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  // Maximum percent of regions in transition when balancing<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  private final double maxRitPercent;<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  private final LockManager lockManager = new LockManager(this);<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>  private LoadBalancer balancer;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  private RegionNormalizer normalizer;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  private BalancerChore balancerChore;<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  private RegionNormalizerChore normalizerChore;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  private ClusterStatusChore clusterStatusChore;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span>  CatalogJanitor catalogJanitorChore;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  private LogCleaner logCleaner;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  private HFileCleaner hfileCleaner;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  private MobCompactionChore mobCompactChore;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  // used to synchronize the mobCompactionStates<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  // save the information of mob compactions in tables.<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  MasterCoprocessorHost cpHost;<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  private final boolean preLoadTableDescriptors;<a name="line.398"></a>
-<span class="sourceLineNo">399</span><a name="line.399"></a>
-<span class="sourceLineNo">400</span>  // Time stamps for when a hmaster became active<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  private long masterActiveTime;<a name="line.401"></a>
+<span class="sourceLineNo">365</span>  // flag set after we complete initialization once active<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>  // flag set after master services are started,<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  // initialization may have not completed yet.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  volatile boolean serviceStarted = false;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  // Maximum time we should run balancer for<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  private final int maxBlancingTime;<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  // Maximum percent of regions in transition when balancing<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  private final double maxRitPercent;<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private final LockManager lockManager = new LockManager(this);<a name="line.377"></a>
+<span class="sourceLineNo">378</span><a name="line.378"></a>
+<span class="sourceLineNo">379</span>  private LoadBalancer balancer;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  private RegionNormalizer normalizer;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  private BalancerChore balancerChore;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  private RegionNormalizerChore normalizerChore;<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  private ClusterStatusChore clusterStatusChore;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  CatalogJanitor catalogJanitorChore;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>  private LogCleaner logCleaner;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>  private HFileCleaner hfileCleaner;<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  private MobCompactionChore mobCompactChore;<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  // used to synchronize the mobCompactionStates<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  // save the information of mob compactions in tables.<a name="line.395"></a>
+<span class="sourceLineNo">396</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.397"></a>
+<span class="sourceLineNo">398</span><a name="line.398"></a>
+<span class="sourceLineNo">399</span>  MasterCoprocessorHost cpHost;<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>  private final boolean preLoadTableDescriptors;<a name="line.401"></a>
 <span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  private long masterFinishedInitializationTime;<a name="line.404"></a>
+<span class="sourceLineNo">403</span>  // Time stamps for when a hmaster became active<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  private long masterActiveTime;<a name="line.404"></a>
 <span class="sourceLineNo">405</span><a name="line.405"></a>
-<span class="sourceLineNo">406</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private final boolean masterCheckCompression;<a name="line.407"></a>
+<span class="sourceLineNo">406</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  private long masterFinishedInitializationTime;<a name="line.407"></a>
 <span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  //should we check encryption settings at master side, default true<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private final boolean masterCheckEncryption;<a name="line.410"></a>
+<span class="sourceLineNo">409</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  private final boolean masterCheckCompression;<a name="line.410"></a>
 <span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  // monitor for snapshot of hbase tables<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  SnapshotManager snapshotManager;<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  // monitor for distributed procedures<a name="line.416"></a>
-<span class="sourceLineNo">417</span>  private MasterProcedureManagerHost mpmHost;<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  private volatile MasterQuotaManager quotaManager;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  private QuotaObserverChore quotaObserverChore;<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.423"></a>
-<span class="sourceLineNo">424</span><a name="line.424"></a>
-<span class="sourceLineNo">425</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  private WALProcedureStore procedureStore;<a name="line.426"></a>
+<span class="sourceLineNo">412</span>  //should we check encryption settings at master side, default true<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  private final boolean masterCheckEncryption;<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>  // monitor for snapshot of hbase tables<a name="line.417"></a>
+<span class="sourceLineNo">418</span>  SnapshotManager snapshotManager;<a name="line.418"></a>
+<span class="sourceLineNo">419</span>  // monitor for distributed procedures<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  private MasterProcedureManagerHost mpmHost;<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.422"></a>
+<span class="sourceLineNo">423</span>  private volatile MasterQuotaManager quotaManager;<a name="line.423"></a>
+<span class="sourceLineNo">424</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  private QuotaObserverChore quotaObserverChore;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.426"></a>
 <span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>  // handle table states<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  private TableStateManager tableStateManager;<a name="line.429"></a>
+<span class="sourceLineNo">428</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  private WALProcedureStore procedureStore;<a name="line.429"></a>
 <span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>  private long splitPlanCount;<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  private long mergePlanCount;<a name="line.432"></a>
+<span class="sourceLineNo">431</span>  // handle table states<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  private TableStateManager tableStateManager;<a name="line.432"></a>
 <span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span>  /* Handle favored nodes information */<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  private FavoredNodesManager favoredNodesManager;<a name="line.435"></a>
+<span class="sourceLineNo">434</span>  private long splitPlanCount;<a name="line.434"></a>
+<span class="sourceLineNo">435</span>  private long mergePlanCount;<a name="line.435"></a>
 <span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  private Server masterJettyServer;<a name="line.438"></a>
+<span class="sourceLineNo">437</span>  /* Handle favored nodes information */<a name="line.437"></a>
+<span class="sourceLineNo">438</span>  private FavoredNodesManager favoredNodesManager;<a name="line.438"></a>
 <span class="sourceLineNo">439</span><a name="line.439"></a>
-<span class="sourceLineNo">440</span>  public static class RedirectServlet extends HttpServlet {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    private final int regionServerInfoPort;<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    private final String regionServerHostname;<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>    /**<a name="line.445"></a>
-<span class="sourceLineNo">446</span>     * @param infoServer that we're trying to send all requests to<a name="line.446"></a>
-<span class="sourceLineNo">447</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.447"></a>
-<span class="sourceLineNo">448</span>     */<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>       regionServerInfoPort = infoServer.getPort();<a name="line.450"></a>
-<span class="sourceLineNo">451</span>       regionServerHostname = hostname;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    @Override<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    public void doGet(HttpServletRequest request,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      String redirectHost = regionServerHostname;<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      if(redirectHost == null) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        redirectHost = request.getServerName();<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.461"></a>
-<span class="sourceLineNo">462</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.462"></a>
-<span class="sourceLineNo">463</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.463"></a>
-<span class="sourceLineNo">464</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.464"></a>
-<span class="sourceLineNo">465</span>              "to an appropriate hostname.");<a name="line.465"></a>
-<span class="sourceLineNo">466</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.466"></a>
-<span class="sourceLineNo">467</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.467"></a>
-<span class="sourceLineNo">468</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.468"></a>
-<span class="sourceLineNo">469</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          return;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      String redirectUrl = request.getScheme() + "://"<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.476"></a>
-<span class="sourceLineNo">477</span>        + request.getRequestURI();<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      response.sendRedirect(redirectUrl);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    }<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>  /**<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * Initializ

<TRUNCATED>

[22/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html
index 17ea7d8..b56bd67 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterRpcServices.html
@@ -542,1814 +542,1813 @@
 <span class="sourceLineNo">534</span>      RpcController controller, ReportRSFatalErrorRequest request) throws ServiceException {<a name="line.534"></a>
 <span class="sourceLineNo">535</span>    String errorText = request.getErrorMessage();<a name="line.535"></a>
 <span class="sourceLineNo">536</span>    ServerName sn = ProtobufUtil.toServerName(request.getServer());<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    String msg = "Region server " + sn<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      + " reported a fatal error:\n" + errorText;<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    LOG.error(msg);<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    master.rsFatals.add(msg);<a name="line.540"></a>
-<span class="sourceLineNo">541</span>    return ReportRSFatalErrorResponse.newBuilder().build();<a name="line.541"></a>
-<span class="sourceLineNo">542</span>  }<a name="line.542"></a>
-<span class="sourceLineNo">543</span><a name="line.543"></a>
-<span class="sourceLineNo">544</span>  @Override<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  public AddColumnResponse addColumn(RpcController controller,<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      AddColumnRequest req) throws ServiceException {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    try {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      long procId = master.addColumn(<a name="line.548"></a>
-<span class="sourceLineNo">549</span>          ProtobufUtil.toTableName(req.getTableName()),<a name="line.549"></a>
-<span class="sourceLineNo">550</span>          ProtobufUtil.toColumnFamilyDescriptor(req.getColumnFamilies()),<a name="line.550"></a>
-<span class="sourceLineNo">551</span>          req.getNonceGroup(),<a name="line.551"></a>
-<span class="sourceLineNo">552</span>          req.getNonce());<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      if (procId == -1) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>        // This mean operation was not performed in server, so do not set any procId<a name="line.554"></a>
-<span class="sourceLineNo">555</span>        return AddColumnResponse.newBuilder().build();<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      } else {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>        return AddColumnResponse.newBuilder().setProcId(procId).build();<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      }<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    } catch (IOException ioe) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      throw new ServiceException(ioe);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    }<a name="line.561"></a>
-<span class="sourceLineNo">562</span>  }<a name="line.562"></a>
-<span class="sourceLineNo">563</span><a name="line.563"></a>
-<span class="sourceLineNo">564</span>  @Override<a name="line.564"></a>
-<span class="sourceLineNo">565</span>  public AssignRegionResponse assignRegion(RpcController controller,<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      AssignRegionRequest req) throws ServiceException {<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    try {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      master.checkInitialized();<a name="line.568"></a>
-<span class="sourceLineNo">569</span><a name="line.569"></a>
-<span class="sourceLineNo">570</span>      final RegionSpecifierType type = req.getRegion().getType();<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      if (type != RegionSpecifierType.REGION_NAME) {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>        LOG.warn("assignRegion specifier type: expected: " + RegionSpecifierType.REGION_NAME<a name="line.572"></a>
-<span class="sourceLineNo">573</span>          + " actual: " + type);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>      final byte[] regionName = req.getRegion().getValue().toByteArray();<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      final RegionInfo regionInfo = master.getAssignmentManager().getRegionInfo(regionName);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      if (regionInfo == null) throw new UnknownRegionException(Bytes.toStringBinary(regionName));<a name="line.578"></a>
-<span class="sourceLineNo">579</span><a name="line.579"></a>
-<span class="sourceLineNo">580</span>      final AssignRegionResponse arr = AssignRegionResponse.newBuilder().build();<a name="line.580"></a>
-<span class="sourceLineNo">581</span>      if (master.cpHost != null) {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>        master.cpHost.preAssign(regionInfo);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>      }<a name="line.583"></a>
-<span class="sourceLineNo">584</span>      LOG.info(master.getClientIdAuditPrefix() + " assign " + regionInfo.getRegionNameAsString());<a name="line.584"></a>
-<span class="sourceLineNo">585</span>      master.getAssignmentManager().assign(regionInfo);<a name="line.585"></a>
-<span class="sourceLineNo">586</span>      if (master.cpHost != null) {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>        master.cpHost.postAssign(regionInfo);<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      }<a name="line.588"></a>
-<span class="sourceLineNo">589</span>      return arr;<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    } catch (IOException ioe) {<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      throw new ServiceException(ioe);<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    }<a name="line.592"></a>
-<span class="sourceLineNo">593</span>  }<a name="line.593"></a>
+<span class="sourceLineNo">537</span>    String msg = sn + " reported a fatal error:\n" + errorText;<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    LOG.warn(msg);<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    master.rsFatals.add(msg);<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    return ReportRSFatalErrorResponse.newBuilder().build();<a name="line.540"></a>
+<span class="sourceLineNo">541</span>  }<a name="line.541"></a>
+<span class="sourceLineNo">542</span><a name="line.542"></a>
+<span class="sourceLineNo">543</span>  @Override<a name="line.543"></a>
+<span class="sourceLineNo">544</span>  public AddColumnResponse addColumn(RpcController controller,<a name="line.544"></a>
+<span class="sourceLineNo">545</span>      AddColumnRequest req) throws ServiceException {<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    try {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      long procId = master.addColumn(<a name="line.547"></a>
+<span class="sourceLineNo">548</span>          ProtobufUtil.toTableName(req.getTableName()),<a name="line.548"></a>
+<span class="sourceLineNo">549</span>          ProtobufUtil.toColumnFamilyDescriptor(req.getColumnFamilies()),<a name="line.549"></a>
+<span class="sourceLineNo">550</span>          req.getNonceGroup(),<a name="line.550"></a>
+<span class="sourceLineNo">551</span>          req.getNonce());<a name="line.551"></a>
+<span class="sourceLineNo">552</span>      if (procId == -1) {<a name="line.552"></a>
+<span class="sourceLineNo">553</span>        // This mean operation was not performed in server, so do not set any procId<a name="line.553"></a>
+<span class="sourceLineNo">554</span>        return AddColumnResponse.newBuilder().build();<a name="line.554"></a>
+<span class="sourceLineNo">555</span>      } else {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>        return AddColumnResponse.newBuilder().setProcId(procId).build();<a name="line.556"></a>
+<span class="sourceLineNo">557</span>      }<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    } catch (IOException ioe) {<a name="line.558"></a>
+<span class="sourceLineNo">559</span>      throw new ServiceException(ioe);<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    }<a name="line.560"></a>
+<span class="sourceLineNo">561</span>  }<a name="line.561"></a>
+<span class="sourceLineNo">562</span><a name="line.562"></a>
+<span class="sourceLineNo">563</span>  @Override<a name="line.563"></a>
+<span class="sourceLineNo">564</span>  public AssignRegionResponse assignRegion(RpcController controller,<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      AssignRegionRequest req) throws ServiceException {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    try {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      master.checkInitialized();<a name="line.567"></a>
+<span class="sourceLineNo">568</span><a name="line.568"></a>
+<span class="sourceLineNo">569</span>      final RegionSpecifierType type = req.getRegion().getType();<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      if (type != RegionSpecifierType.REGION_NAME) {<a name="line.570"></a>
+<span class="sourceLineNo">571</span>        LOG.warn("assignRegion specifier type: expected: " + RegionSpecifierType.REGION_NAME<a name="line.571"></a>
+<span class="sourceLineNo">572</span>          + " actual: " + type);<a name="line.572"></a>
+<span class="sourceLineNo">573</span>      }<a name="line.573"></a>
+<span class="sourceLineNo">574</span><a name="line.574"></a>
+<span class="sourceLineNo">575</span>      final byte[] regionName = req.getRegion().getValue().toByteArray();<a name="line.575"></a>
+<span class="sourceLineNo">576</span>      final RegionInfo regionInfo = master.getAssignmentManager().getRegionInfo(regionName);<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      if (regionInfo == null) throw new UnknownRegionException(Bytes.toStringBinary(regionName));<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>      final AssignRegionResponse arr = AssignRegionResponse.newBuilder().build();<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      if (master.cpHost != null) {<a name="line.580"></a>
+<span class="sourceLineNo">581</span>        master.cpHost.preAssign(regionInfo);<a name="line.581"></a>
+<span class="sourceLineNo">582</span>      }<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      LOG.info(master.getClientIdAuditPrefix() + " assign " + regionInfo.getRegionNameAsString());<a name="line.583"></a>
+<span class="sourceLineNo">584</span>      master.getAssignmentManager().assign(regionInfo);<a name="line.584"></a>
+<span class="sourceLineNo">585</span>      if (master.cpHost != null) {<a name="line.585"></a>
+<span class="sourceLineNo">586</span>        master.cpHost.postAssign(regionInfo);<a name="line.586"></a>
+<span class="sourceLineNo">587</span>      }<a name="line.587"></a>
+<span class="sourceLineNo">588</span>      return arr;<a name="line.588"></a>
+<span class="sourceLineNo">589</span>    } catch (IOException ioe) {<a name="line.589"></a>
+<span class="sourceLineNo">590</span>      throw new ServiceException(ioe);<a name="line.590"></a>
+<span class="sourceLineNo">591</span>    }<a name="line.591"></a>
+<span class="sourceLineNo">592</span>  }<a name="line.592"></a>
+<span class="sourceLineNo">593</span><a name="line.593"></a>
 <span class="sourceLineNo">594</span><a name="line.594"></a>
-<span class="sourceLineNo">595</span><a name="line.595"></a>
-<span class="sourceLineNo">596</span>  @Override<a name="line.596"></a>
-<span class="sourceLineNo">597</span>  public BalanceResponse balance(RpcController controller,<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      BalanceRequest request) throws ServiceException {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    try {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      return BalanceResponse.newBuilder().setBalancerRan(master.balance(<a name="line.600"></a>
-<span class="sourceLineNo">601</span>        request.hasForce() ? request.getForce() : false)).build();<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    } catch (IOException ex) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      throw new ServiceException(ex);<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    }<a name="line.604"></a>
-<span class="sourceLineNo">605</span>  }<a name="line.605"></a>
-<span class="sourceLineNo">606</span><a name="line.606"></a>
-<span class="sourceLineNo">607</span>  @Override<a name="line.607"></a>
-<span class="sourceLineNo">608</span>  public CreateNamespaceResponse createNamespace(RpcController controller,<a name="line.608"></a>
-<span class="sourceLineNo">609</span>     CreateNamespaceRequest request) throws ServiceException {<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    try {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      long procId = master.createNamespace(<a name="line.611"></a>
-<span class="sourceLineNo">612</span>        ProtobufUtil.toNamespaceDescriptor(request.getNamespaceDescriptor()),<a name="line.612"></a>
-<span class="sourceLineNo">613</span>        request.getNonceGroup(),<a name="line.613"></a>
-<span class="sourceLineNo">614</span>        request.getNonce());<a name="line.614"></a>
-<span class="sourceLineNo">615</span>      return CreateNamespaceResponse.newBuilder().setProcId(procId).build();<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    } catch (IOException e) {<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      throw new ServiceException(e);<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    }<a name="line.618"></a>
-<span class="sourceLineNo">619</span>  }<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>  @Override<a name="line.621"></a>
-<span class="sourceLineNo">622</span>  public CreateTableResponse createTable(RpcController controller, CreateTableRequest req)<a name="line.622"></a>
-<span class="sourceLineNo">623</span>  throws ServiceException {<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    TableDescriptor tableDescriptor = ProtobufUtil.toTableDescriptor(req.getTableSchema());<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    byte [][] splitKeys = ProtobufUtil.getSplitKeysArray(req);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    try {<a name="line.626"></a>
-<span class="sourceLineNo">627</span>      long procId =<a name="line.627"></a>
-<span class="sourceLineNo">628</span>          master.createTable(tableDescriptor, splitKeys, req.getNonceGroup(), req.getNonce());<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      LOG.info(master.getClientIdAuditPrefix() + " procedure request for creating table: " +<a name="line.629"></a>
-<span class="sourceLineNo">630</span>              req.getTableSchema().getTableName() + " procId is: " + procId);<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      return CreateTableResponse.newBuilder().setProcId(procId).build();<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    } catch (IOException ioe) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      throw new ServiceException(ioe);<a name="line.633"></a>
-<span class="sourceLineNo">634</span>    }<a name="line.634"></a>
-<span class="sourceLineNo">635</span>  }<a name="line.635"></a>
-<span class="sourceLineNo">636</span><a name="line.636"></a>
-<span class="sourceLineNo">637</span>  @Override<a name="line.637"></a>
-<span class="sourceLineNo">638</span>  public DeleteColumnResponse deleteColumn(RpcController controller,<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      DeleteColumnRequest req) throws ServiceException {<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    try {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      long procId = master.deleteColumn(<a name="line.641"></a>
-<span class="sourceLineNo">642</span>        ProtobufUtil.toTableName(req.getTableName()),<a name="line.642"></a>
-<span class="sourceLineNo">643</span>        req.getColumnName().toByteArray(),<a name="line.643"></a>
-<span class="sourceLineNo">644</span>        req.getNonceGroup(),<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        req.getNonce());<a name="line.645"></a>
-<span class="sourceLineNo">646</span>      if (procId == -1) {<a name="line.646"></a>
-<span class="sourceLineNo">647</span>        // This mean operation was not performed in server, so do not set any procId<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        return DeleteColumnResponse.newBuilder().build();<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      } else {<a name="line.649"></a>
-<span class="sourceLineNo">650</span>        return DeleteColumnResponse.newBuilder().setProcId(procId).build();<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      }<a name="line.651"></a>
-<span class="sourceLineNo">652</span>    } catch (IOException ioe) {<a name="line.652"></a>
-<span class="sourceLineNo">653</span>      throw new ServiceException(ioe);<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    }<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
-<span class="sourceLineNo">656</span><a name="line.656"></a>
-<span class="sourceLineNo">657</span>  @Override<a name="line.657"></a>
-<span class="sourceLineNo">658</span>  public DeleteNamespaceResponse deleteNamespace(RpcController controller,<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      DeleteNamespaceRequest request) throws ServiceException {<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    try {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      long procId = master.deleteNamespace(<a name="line.661"></a>
-<span class="sourceLineNo">662</span>        request.getNamespaceName(),<a name="line.662"></a>
-<span class="sourceLineNo">663</span>        request.getNonceGroup(),<a name="line.663"></a>
-<span class="sourceLineNo">664</span>        request.getNonce());<a name="line.664"></a>
-<span class="sourceLineNo">665</span>      return DeleteNamespaceResponse.newBuilder().setProcId(procId).build();<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    } catch (IOException e) {<a name="line.666"></a>
-<span class="sourceLineNo">667</span>      throw new ServiceException(e);<a name="line.667"></a>
-<span class="sourceLineNo">668</span>    }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>  }<a name="line.669"></a>
-<span class="sourceLineNo">670</span><a name="line.670"></a>
-<span class="sourceLineNo">671</span>  /**<a name="line.671"></a>
-<span class="sourceLineNo">672</span>   * Execute Delete Snapshot operation.<a name="line.672"></a>
-<span class="sourceLineNo">673</span>   * @return DeleteSnapshotResponse (a protobuf wrapped void) if the snapshot existed and was<a name="line.673"></a>
-<span class="sourceLineNo">674</span>   *    deleted properly.<a name="line.674"></a>
-<span class="sourceLineNo">675</span>   * @throws ServiceException wrapping SnapshotDoesNotExistException if specified snapshot did not<a name="line.675"></a>
-<span class="sourceLineNo">676</span>   *    exist.<a name="line.676"></a>
-<span class="sourceLineNo">677</span>   */<a name="line.677"></a>
-<span class="sourceLineNo">678</span>  @Override<a name="line.678"></a>
-<span class="sourceLineNo">679</span>  public DeleteSnapshotResponse deleteSnapshot(RpcController controller,<a name="line.679"></a>
-<span class="sourceLineNo">680</span>      DeleteSnapshotRequest request) throws ServiceException {<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    try {<a name="line.681"></a>
-<span class="sourceLineNo">682</span>      master.checkInitialized();<a name="line.682"></a>
-<span class="sourceLineNo">683</span>      master.snapshotManager.checkSnapshotSupport();<a name="line.683"></a>
-<span class="sourceLineNo">684</span><a name="line.684"></a>
-<span class="sourceLineNo">685</span>      LOG.info(master.getClientIdAuditPrefix() + " delete " + request.getSnapshot());<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      master.snapshotManager.deleteSnapshot(request.getSnapshot());<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      return DeleteSnapshotResponse.newBuilder().build();<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    } catch (IOException e) {<a name="line.688"></a>
-<span class="sourceLineNo">689</span>      throw new ServiceException(e);<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    }<a name="line.690"></a>
-<span class="sourceLineNo">691</span>  }<a name="line.691"></a>
-<span class="sourceLineNo">692</span><a name="line.692"></a>
-<span class="sourceLineNo">693</span>  @Override<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  public DeleteTableResponse deleteTable(RpcController controller,<a name="line.694"></a>
-<span class="sourceLineNo">695</span>      DeleteTableRequest request) throws ServiceException {<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    try {<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      long procId = master.deleteTable(ProtobufUtil.toTableName(<a name="line.697"></a>
-<span class="sourceLineNo">698</span>          request.getTableName()), request.getNonceGroup(), request.getNonce());<a name="line.698"></a>
-<span class="sourceLineNo">699</span>      return DeleteTableResponse.newBuilder().setProcId(procId).build();<a name="line.699"></a>
-<span class="sourceLineNo">700</span>    } catch (IOException ioe) {<a name="line.700"></a>
-<span class="sourceLineNo">701</span>      throw new ServiceException(ioe);<a name="line.701"></a>
-<span class="sourceLineNo">702</span>    }<a name="line.702"></a>
-<span class="sourceLineNo">703</span>  }<a name="line.703"></a>
-<span class="sourceLineNo">704</span><a name="line.704"></a>
-<span class="sourceLineNo">705</span>  @Override<a name="line.705"></a>
-<span class="sourceLineNo">706</span>  public TruncateTableResponse truncateTable(RpcController controller, TruncateTableRequest request)<a name="line.706"></a>
-<span class="sourceLineNo">707</span>      throws ServiceException {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    try {<a name="line.708"></a>
-<span class="sourceLineNo">709</span>      long procId = master.truncateTable(<a name="line.709"></a>
-<span class="sourceLineNo">710</span>        ProtobufUtil.toTableName(request.getTableName()),<a name="line.710"></a>
-<span class="sourceLineNo">711</span>        request.getPreserveSplits(),<a name="line.711"></a>
-<span class="sourceLineNo">712</span>        request.getNonceGroup(),<a name="line.712"></a>
-<span class="sourceLineNo">713</span>        request.getNonce());<a name="line.713"></a>
-<span class="sourceLineNo">714</span>      return TruncateTableResponse.newBuilder().setProcId(procId).build();<a name="line.714"></a>
-<span class="sourceLineNo">715</span>    } catch (IOException ioe) {<a name="line.715"></a>
-<span class="sourceLineNo">716</span>      throw new ServiceException(ioe);<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    }<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
-<span class="sourceLineNo">719</span><a name="line.719"></a>
-<span class="sourceLineNo">720</span>  @Override<a name="line.720"></a>
-<span class="sourceLineNo">721</span>  public DisableTableResponse disableTable(RpcController controller,<a name="line.721"></a>
-<span class="sourceLineNo">722</span>      DisableTableRequest request) throws ServiceException {<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    try {<a name="line.723"></a>
-<span class="sourceLineNo">724</span>      long procId = master.disableTable(<a name="line.724"></a>
-<span class="sourceLineNo">725</span>        ProtobufUtil.toTableName(request.getTableName()),<a name="line.725"></a>
-<span class="sourceLineNo">726</span>        request.getNonceGroup(),<a name="line.726"></a>
-<span class="sourceLineNo">727</span>        request.getNonce());<a name="line.727"></a>
-<span class="sourceLineNo">728</span>      return DisableTableResponse.newBuilder().setProcId(procId).build();<a name="line.728"></a>
-<span class="sourceLineNo">729</span>    } catch (IOException ioe) {<a name="line.729"></a>
-<span class="sourceLineNo">730</span>      throw new ServiceException(ioe);<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    }<a name="line.731"></a>
-<span class="sourceLineNo">732</span>  }<a name="line.732"></a>
-<span class="sourceLineNo">733</span><a name="line.733"></a>
-<span class="sourceLineNo">734</span>  @Override<a name="line.734"></a>
-<span class="sourceLineNo">735</span>  public EnableCatalogJanitorResponse enableCatalogJanitor(RpcController c,<a name="line.735"></a>
-<span class="sourceLineNo">736</span>      EnableCatalogJanitorRequest req) throws ServiceException {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    rpcPreCheck("enableCatalogJanitor");<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    return EnableCatalogJanitorResponse.newBuilder().setPrevValue(<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      master.catalogJanitorChore.setEnabled(req.getEnable())).build();<a name="line.739"></a>
-<span class="sourceLineNo">740</span>  }<a name="line.740"></a>
-<span class="sourceLineNo">741</span><a name="line.741"></a>
-<span class="sourceLineNo">742</span>  @Override<a name="line.742"></a>
-<span class="sourceLineNo">743</span>  public SetCleanerChoreRunningResponse setCleanerChoreRunning(<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    RpcController c, SetCleanerChoreRunningRequest req) throws ServiceException {<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    rpcPreCheck("setCleanerChoreRunning");<a name="line.745"></a>
-<span class="sourceLineNo">746</span><a name="line.746"></a>
-<span class="sourceLineNo">747</span>    boolean prevValue =<a name="line.747"></a>
-<span class="sourceLineNo">748</span>      master.getLogCleaner().getEnabled() &amp;&amp; master.getHFileCleaner().getEnabled();<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    master.getLogCleaner().setEnabled(req.getOn());<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    master.getHFileCleaner().setEnabled(req.getOn());<a name="line.750"></a>
-<span class="sourceLineNo">751</span>    return SetCleanerChoreRunningResponse.newBuilder().setPrevValue(prevValue).build();<a name="line.751"></a>
-<span class="sourceLineNo">752</span>  }<a name="line.752"></a>
-<span class="sourceLineNo">753</span><a name="line.753"></a>
-<span class="sourceLineNo">754</span>  @Override<a name="line.754"></a>
-<span class="sourceLineNo">755</span>  public EnableTableResponse enableTable(RpcController controller,<a name="line.755"></a>
-<span class="sourceLineNo">756</span>      EnableTableRequest request) throws ServiceException {<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    try {<a name="line.757"></a>
-<span class="sourceLineNo">758</span>      long procId = master.enableTable(<a name="line.758"></a>
-<span class="sourceLineNo">759</span>        ProtobufUtil.toTableName(request.getTableName()),<a name="line.759"></a>
-<span class="sourceLineNo">760</span>        request.getNonceGroup(),<a name="line.760"></a>
-<span class="sourceLineNo">761</span>        request.getNonce());<a name="line.761"></a>
-<span class="sourceLineNo">762</span>      return EnableTableResponse.newBuilder().setProcId(procId).build();<a name="line.762"></a>
-<span class="sourceLineNo">763</span>    } catch (IOException ioe) {<a name="line.763"></a>
-<span class="sourceLineNo">764</span>      throw new ServiceException(ioe);<a name="line.764"></a>
-<span class="sourceLineNo">765</span>    }<a name="line.765"></a>
-<span class="sourceLineNo">766</span>  }<a name="line.766"></a>
-<span class="sourceLineNo">767</span><a name="line.767"></a>
-<span class="sourceLineNo">768</span>  @Override<a name="line.768"></a>
-<span class="sourceLineNo">769</span>  public MergeTableRegionsResponse mergeTableRegions(<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      RpcController c, MergeTableRegionsRequest request) throws ServiceException {<a name="line.770"></a>
-<span class="sourceLineNo">771</span>    try {<a name="line.771"></a>
-<span class="sourceLineNo">772</span>      master.checkInitialized();<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    } catch (IOException ioe) {<a name="line.773"></a>
-<span class="sourceLineNo">774</span>      throw new ServiceException(ioe);<a name="line.774"></a>
-<span class="sourceLineNo">775</span>    }<a name="line.775"></a>
-<span class="sourceLineNo">776</span><a name="line.776"></a>
-<span class="sourceLineNo">777</span>    RegionStates regionStates = master.getAssignmentManager().getRegionStates();<a name="line.777"></a>
-<span class="sourceLineNo">778</span><a name="line.778"></a>
-<span class="sourceLineNo">779</span>    assert(request.getRegionCount() == 2);<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    RegionInfo[] regionsToMerge = new RegionInfo[request.getRegionCount()];<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    for (int i = 0; i &lt; request.getRegionCount(); i++) {<a name="line.781"></a>
-<span class="sourceLineNo">782</span>      final byte[] encodedNameOfRegion = request.getRegion(i).getValue().toByteArray();<a name="line.782"></a>
-<span class="sourceLineNo">783</span>      if (request.getRegion(i).getType() != RegionSpecifierType.ENCODED_REGION_NAME) {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>        LOG.warn("MergeRegions specifier type: expected: "<a name="line.784"></a>
-<span class="sourceLineNo">785</span>          + RegionSpecifierType.ENCODED_REGION_NAME + " actual: region " + i + " ="<a name="line.785"></a>
-<span class="sourceLineNo">786</span>          + request.getRegion(i).getType());<a name="line.786"></a>
-<span class="sourceLineNo">787</span>      }<a name="line.787"></a>
-<span class="sourceLineNo">788</span>      RegionState regionState = regionStates.getRegionState(Bytes.toString(encodedNameOfRegion));<a name="line.788"></a>
-<span class="sourceLineNo">789</span>      if (regionState == null) {<a name="line.789"></a>
-<span class="sourceLineNo">790</span>        throw new ServiceException(<a name="line.790"></a>
-<span class="sourceLineNo">791</span>          new UnknownRegionException(Bytes.toStringBinary(encodedNameOfRegion)));<a name="line.791"></a>
-<span class="sourceLineNo">792</span>      }<a name="line.792"></a>
-<span class="sourceLineNo">793</span>      regionsToMerge[i] = regionState.getRegion();<a name="line.793"></a>
-<span class="sourceLineNo">794</span>    }<a name="line.794"></a>
-<span class="sourceLineNo">795</span><a name="line.795"></a>
-<span class="sourceLineNo">796</span>    try {<a name="line.796"></a>
-<span class="sourceLineNo">797</span>      long procId = master.mergeRegions(<a name="line.797"></a>
-<span class="sourceLineNo">798</span>        regionsToMerge,<a name="line.798"></a>
-<span class="sourceLineNo">799</span>        request.getForcible(),<a name="line.799"></a>
-<span class="sourceLineNo">800</span>        request.getNonceGroup(),<a name="line.800"></a>
-<span class="sourceLineNo">801</span>        request.getNonce());<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      return MergeTableRegionsResponse.newBuilder().setProcId(procId).build();<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    } catch (IOException ioe) {<a name="line.803"></a>
-<span class="sourceLineNo">804</span>      throw new ServiceException(ioe);<a name="line.804"></a>
-<span class="sourceLineNo">805</span>    }<a name="line.805"></a>
-<span class="sourceLineNo">806</span>  }<a name="line.806"></a>
-<span class="sourceLineNo">807</span><a name="line.807"></a>
-<span class="sourceLineNo">808</span>  @Override<a name="line.808"></a>
-<span class="sourceLineNo">809</span>  public SplitTableRegionResponse splitRegion(final RpcController controller,<a name="line.809"></a>
-<span class="sourceLineNo">810</span>      final SplitTableRegionRequest request) throws ServiceException {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    try {<a name="line.811"></a>
-<span class="sourceLineNo">812</span>      long procId = master.splitRegion(<a name="line.812"></a>
-<span class="sourceLineNo">813</span>        ProtobufUtil.toRegionInfo(request.getRegionInfo()),<a name="line.813"></a>
-<span class="sourceLineNo">814</span>        request.hasSplitRow() ? request.getSplitRow().toByteArray() : null,<a name="line.814"></a>
-<span class="sourceLineNo">815</span>        request.getNonceGroup(),<a name="line.815"></a>
-<span class="sourceLineNo">816</span>        request.getNonce());<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      return SplitTableRegionResponse.newBuilder().setProcId(procId).build();<a name="line.817"></a>
-<span class="sourceLineNo">818</span>    } catch (IOException ie) {<a name="line.818"></a>
-<span class="sourceLineNo">819</span>      throw new ServiceException(ie);<a name="line.819"></a>
-<span class="sourceLineNo">820</span>    }<a name="line.820"></a>
-<span class="sourceLineNo">821</span>  }<a name="line.821"></a>
-<span class="sourceLineNo">822</span><a name="line.822"></a>
-<span class="sourceLineNo">823</span>  @Override<a name="line.823"></a>
-<span class="sourceLineNo">824</span>  public ClientProtos.CoprocessorServiceResponse execMasterService(final RpcController controller,<a name="line.824"></a>
-<span class="sourceLineNo">825</span>      final ClientProtos.CoprocessorServiceRequest request) throws ServiceException {<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    rpcPreCheck("execMasterService");<a name="line.826"></a>
-<span class="sourceLineNo">827</span>    try {<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      ServerRpcController execController = new ServerRpcController();<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      ClientProtos.CoprocessorServiceCall call = request.getCall();<a name="line.829"></a>
-<span class="sourceLineNo">830</span>      String serviceName = call.getServiceName();<a name="line.830"></a>
-<span class="sourceLineNo">831</span>      String methodName = call.getMethodName();<a name="line.831"></a>
-<span class="sourceLineNo">832</span>      if (!master.coprocessorServiceHandlers.containsKey(serviceName)) {<a name="line.832"></a>
-<span class="sourceLineNo">833</span>        throw new UnknownProtocolException(null,<a name="line.833"></a>
-<span class="sourceLineNo">834</span>          "No registered Master Coprocessor Endpoint found for " + serviceName +<a name="line.834"></a>
-<span class="sourceLineNo">835</span>          ". Has it been enabled?");<a name="line.835"></a>
-<span class="sourceLineNo">836</span>      }<a name="line.836"></a>
-<span class="sourceLineNo">837</span><a name="line.837"></a>
-<span class="sourceLineNo">838</span>      com.google.protobuf.Service service = master.coprocessorServiceHandlers.get(serviceName);<a name="line.838"></a>
-<span class="sourceLineNo">839</span>      com.google.protobuf.Descriptors.ServiceDescriptor serviceDesc = service.getDescriptorForType();<a name="line.839"></a>
-<span class="sourceLineNo">840</span>      com.google.protobuf.Descriptors.MethodDescriptor methodDesc =<a name="line.840"></a>
-<span class="sourceLineNo">841</span>          CoprocessorRpcUtils.getMethodDescriptor(methodName, serviceDesc);<a name="line.841"></a>
-<span class="sourceLineNo">842</span><a name="line.842"></a>
-<span class="sourceLineNo">843</span>      com.google.protobuf.Message execRequest =<a name="line.843"></a>
-<span class="sourceLineNo">844</span>          CoprocessorRpcUtils.getRequest(service, methodDesc, call.getRequest());<a name="line.844"></a>
-<span class="sourceLineNo">845</span>      final com.google.protobuf.Message.Builder responseBuilder =<a name="line.845"></a>
-<span class="sourceLineNo">846</span>          service.getResponsePrototype(methodDesc).newBuilderForType();<a name="line.846"></a>
-<span class="sourceLineNo">847</span>      service.callMethod(methodDesc, execController, execRequest,<a name="line.847"></a>
-<span class="sourceLineNo">848</span>        (message) -&gt; {<a name="line.848"></a>
-<span class="sourceLineNo">849</span>          if (message != null) {<a name="line.849"></a>
-<span class="sourceLineNo">850</span>            responseBuilder.mergeFrom(message);<a name="line.850"></a>
-<span class="sourceLineNo">851</span>          }<a name="line.851"></a>
-<span class="sourceLineNo">852</span>        });<a name="line.852"></a>
-<span class="sourceLineNo">853</span>      com.google.protobuf.Message execResult = responseBuilder.build();<a name="line.853"></a>
-<span class="sourceLineNo">854</span>      if (execController.getFailedOn() != null) {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>        throw execController.getFailedOn();<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      }<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      return CoprocessorRpcUtils.getResponse(execResult, HConstants.EMPTY_BYTE_ARRAY);<a name="line.857"></a>
-<span class="sourceLineNo">858</span>    } catch (IOException ie) {<a name="line.858"></a>
-<span class="sourceLineNo">859</span>      throw new ServiceException(ie);<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    }<a name="line.860"></a>
-<span class="sourceLineNo">861</span>  }<a name="line.861"></a>
-<span class="sourceLineNo">862</span><a name="line.862"></a>
-<span class="sourceLineNo">863</span>  /**<a name="line.863"></a>
-<span class="sourceLineNo">864</span>   * Triggers an asynchronous attempt to run a distributed procedure.<a name="line.864"></a>
-<span class="sourceLineNo">865</span>   * {@inheritDoc}<a name="line.865"></a>
-<span class="sourceLineNo">866</span>   */<a name="line.866"></a>
-<span class="sourceLineNo">867</span>  @Override<a name="line.867"></a>
-<span class="sourceLineNo">868</span>  public ExecProcedureResponse execProcedure(RpcController controller,<a name="line.868"></a>
-<span class="sourceLineNo">869</span>      ExecProcedureRequest request) throws ServiceException {<a name="line.869"></a>
-<span class="sourceLineNo">870</span>    try {<a name="line.870"></a>
-<span class="sourceLineNo">871</span>      master.checkInitialized();<a name="line.871"></a>
-<span class="sourceLineNo">872</span>      ProcedureDescription desc = request.getProcedure();<a name="line.872"></a>
-<span class="sourceLineNo">873</span>      MasterProcedureManager mpm = master.getMasterProcedureManagerHost().getProcedureManager(<a name="line.873"></a>
-<span class="sourceLineNo">874</span>        desc.getSignature());<a name="line.874"></a>
-<span class="sourceLineNo">875</span>      if (mpm == null) {<a name="line.875"></a>
-<span class="sourceLineNo">876</span>        throw new ServiceException(new DoNotRetryIOException("The procedure is not registered: "<a name="line.876"></a>
-<span class="sourceLineNo">877</span>          + desc.getSignature()));<a name="line.877"></a>
-<span class="sourceLineNo">878</span>      }<a name="line.878"></a>
-<span class="sourceLineNo">879</span>      LOG.info(master.getClientIdAuditPrefix() + " procedure request for: " + desc.getSignature());<a name="line.879"></a>
-<span class="sourceLineNo">880</span>      mpm.checkPermissions(desc, accessChecker, RpcServer.getRequestUser().orElse(null));<a name="line.880"></a>
-<span class="sourceLineNo">881</span>      mpm.execProcedure(desc);<a name="line.881"></a>
-<span class="sourceLineNo">882</span>      // send back the max amount of time the client should wait for the procedure<a name="line.882"></a>
-<span class="sourceLineNo">883</span>      // to complete<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      long waitTime = SnapshotDescriptionUtils.DEFAULT_MAX_WAIT_TIME;<a name="line.884"></a>
-<span class="sourceLineNo">885</span>      return ExecProcedureResponse.newBuilder().setExpectedTimeout(<a name="line.885"></a>
-<span class="sourceLineNo">886</span>        waitTime).build();<a name="line.886"></a>
-<span class="sourceLineNo">887</span>    } catch (ForeignException e) {<a name="line.887"></a>
-<span class="sourceLineNo">888</span>      throw new ServiceException(e.getCause());<a name="line.888"></a>
-<span class="sourceLineNo">889</span>    } catch (IOException e) {<a name="line.889"></a>
-<span class="sourceLineNo">890</span>      throw new ServiceException(e);<a name="line.890"></a>
-<span class="sourceLineNo">891</span>    }<a name="line.891"></a>
-<span class="sourceLineNo">892</span>  }<a name="line.892"></a>
-<span class="sourceLineNo">893</span><a name="line.893"></a>
-<span class="sourceLineNo">894</span>  /**<a name="line.894"></a>
-<span class="sourceLineNo">895</span>   * Triggers a synchronous attempt to run a distributed procedure and sets<a name="line.895"></a>
-<span class="sourceLineNo">896</span>   * return data in response.<a name="line.896"></a>
-<span class="sourceLineNo">897</span>   * {@inheritDoc}<a name="line.897"></a>
-<span class="sourceLineNo">898</span>   */<a name="line.898"></a>
-<span class="sourceLineNo">899</span>  @Override<a name="line.899"></a>
-<span class="sourceLineNo">900</span>  public ExecProcedureResponse execProcedureWithRet(RpcController controller,<a name="line.900"></a>
-<span class="sourceLineNo">901</span>      ExecProcedureRequest request) throws ServiceException {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>    rpcPreCheck("execProcedureWithRet");<a name="line.902"></a>
-<span class="sourceLineNo">903</span>    try {<a name="line.903"></a>
-<span class="sourceLineNo">904</span>      ProcedureDescription desc = request.getProcedure();<a name="line.904"></a>
-<span class="sourceLineNo">905</span>      MasterProcedureManager mpm =<a name="line.905"></a>
-<span class="sourceLineNo">906</span>        master.getMasterProcedureManagerHost().getProcedureManager(desc.getSignature());<a name="line.906"></a>
-<span class="sourceLineNo">907</span>      if (mpm == null) {<a name="line.907"></a>
-<span class="sourceLineNo">908</span>        throw new ServiceException("The procedure is not registered: " + desc.getSignature());<a name="line.908"></a>
-<span class="sourceLineNo">909</span>      }<a name="line.909"></a>
-<span class="sourceLineNo">910</span>      LOG.info(master.getClientIdAuditPrefix() + " procedure request for: " + desc.getSignature());<a name="line.910"></a>
-<span class="sourceLineNo">911</span>      byte[] data = mpm.execProcedureWithRet(desc);<a name="line.911"></a>
-<span class="sourceLineNo">912</span>      ExecProcedureResponse.Builder builder = ExecProcedureResponse.newBuilder();<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      // set return data if available<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      if (data != null) {<a name="line.914"></a>
-<span class="sourceLineNo">915</span>        builder.setReturnData(UnsafeByteOperations.unsafeWrap(data));<a name="line.915"></a>
-<span class="sourceLineNo">916</span>      }<a name="line.916"></a>
-<span class="sourceLineNo">917</span>      return builder.build();<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    } catch (IOException e) {<a name="line.918"></a>
-<span class="sourceLineNo">919</span>      throw new ServiceException(e);<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    }<a name="line.920"></a>
-<span class="sourceLineNo">921</span>  }<a name="line.921"></a>
-<span class="sourceLineNo">922</span><a name="line.922"></a>
-<span class="sourceLineNo">923</span>  @Override<a name="line.923"></a>
-<span class="sourceLineNo">924</span>  public GetClusterStatusResponse getClusterStatus(RpcController controller,<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      GetClusterStatusRequest req) throws ServiceException {<a name="line.925"></a>
-<span class="sourceLineNo">926</span>    GetClusterStatusResponse.Builder response = GetClusterStatusResponse.newBuilder();<a name="line.926"></a>
-<span class="sourceLineNo">927</span>    try {<a name="line.927"></a>
-<span class="sourceLineNo">928</span>      master.checkInitialized();<a name="line.928"></a>
-<span class="sourceLineNo">929</span>      response.setClusterStatus(ClusterMetricsBuilder.toClusterStatus(<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        master.getClusterMetrics(ClusterMetricsBuilder.toOptions(req.getOptionsList()))));<a name="line.930"></a>
-<span class="sourceLineNo">931</span>    } catch (IOException e) {<a name="line.931"></a>
-<span class="sourceLineNo">932</span>      throw new ServiceException(e);<a name="line.932"></a>
-<span class="sourceLineNo">933</span>    }<a name="line.933"></a>
-<span class="sourceLineNo">934</span>    return response.build();<a name="line.934"></a>
-<span class="sourceLineNo">935</span>  }<a name="line.935"></a>
-<span class="sourceLineNo">936</span><a name="line.936"></a>
-<span class="sourceLineNo">937</span>  /**<a name="line.937"></a>
-<span class="sourceLineNo">938</span>   * List the currently available/stored snapshots. Any in-progress snapshots are ignored<a name="line.938"></a>
-<span class="sourceLineNo">939</span>   */<a name="line.939"></a>
-<span class="sourceLineNo">940</span>  @Override<a name="line.940"></a>
-<span class="sourceLineNo">941</span>  public GetCompletedSnapshotsResponse getCompletedSnapshots(RpcController controller,<a name="line.941"></a>
-<span class="sourceLineNo">942</span>      GetCompletedSnapshotsRequest request) throws ServiceException {<a name="line.942"></a>
-<span class="sourceLineNo">943</span>    try {<a name="line.943"></a>
-<span class="sourceLineNo">944</span>      master.checkInitialized();<a name="line.944"></a>
-<span class="sourceLineNo">945</span>      GetCompletedSnapshotsResponse.Builder builder = GetCompletedSnapshotsResponse.newBuilder();<a name="line.945"></a>
-<span class="sourceLineNo">946</span>      List&lt;SnapshotDescription&gt; snapshots = master.snapshotManager.getCompletedSnapshots();<a name="line.946"></a>
-<span class="sourceLineNo">947</span><a name="line.947"></a>
-<span class="sourceLineNo">948</span>      // convert to protobuf<a name="line.948"></a>
-<span class="sourceLineNo">949</span>      for (SnapshotDescription snapshot : snapshots) {<a name="line.949"></a>
-<span class="sourceLineNo">950</span>        builder.addSnapshots(snapshot);<a name="line.950"></a>
-<span class="sourceLineNo">951</span>      }<a name="line.951"></a>
-<span class="sourceLineNo">952</span>      return builder.build();<a name="line.952"></a>
-<span class="sourceLineNo">953</span>    } catch (IOException e) {<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      throw new ServiceException(e);<a name="line.954"></a>
-<span class="sourceLineNo">955</span>    }<a name="line.955"></a>
-<span class="sourceLineNo">956</span>  }<a name="line.956"></a>
-<span class="sourceLineNo">957</span><a name="line.957"></a>
-<span class="sourceLineNo">958</span>  @Override<a name="line.958"></a>
-<span class="sourceLineNo">959</span>  public GetNamespaceDescriptorResponse getNamespaceDescriptor(<a name="line.959"></a>
-<span class="sourceLineNo">960</span>      RpcController controller, GetNamespaceDescriptorRequest request)<a name="line.960"></a>
-<span class="sourceLineNo">961</span>      throws ServiceException {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>    try {<a name="line.962"></a>
-<span class="sourceLineNo">963</span>      return GetNamespaceDescriptorResponse.newBuilder()<a name="line.963"></a>
-<span class="sourceLineNo">964</span>        .setNamespaceDescriptor(ProtobufUtil.toProtoNamespaceDescriptor(<a name="line.964"></a>
-<span class="sourceLineNo">965</span>            master.getNamespace(request.getNamespaceName())))<a name="line.965"></a>
-<span class="sourceLineNo">966</span>        .build();<a name="line.966"></a>
-<span class="sourceLineNo">967</span>    } catch (IOException e) {<a name="line.967"></a>
-<span class="sourceLineNo">968</span>      throw new ServiceException(e);<a name="line.968"></a>
-<span class="sourceLineNo">969</span>    }<a name="line.969"></a>
-<span class="sourceLineNo">970</span>  }<a name="line.970"></a>
-<span class="sourceLineNo">971</span><a name="line.971"></a>
-<span class="sourceLineNo">972</span>  /**<a name="line.972"></a>
-<span class="sourceLineNo">973</span>   * Get the number of regions of the table that have been updated by the alter.<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   *<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * @return Pair indicating the number of regions updated Pair.getFirst is the<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   *         regions that are yet to be updated Pair.getSecond is the total number<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   *         of regions of the table<a name="line.977"></a>
-<span class="sourceLineNo">978</span>   * @throws ServiceException<a name="line.978"></a>
-<span class="sourceLineNo">979</span>   */<a name="line.979"></a>
-<span class="sourceLineNo">980</span>  @Override<a name="line.980"></a>
-<span class="sourceLineNo">981</span>  public GetSchemaAlterStatusResponse getSchemaAlterStatus(<a name="line.981"></a>
-<span class="sourceLineNo">982</span>      RpcController controller, GetSchemaAlterStatusRequest req) throws ServiceException {<a name="line.982"></a>
-<span class="sourceLineNo">983</span>    // TODO: currently, we query using the table name on the client side. this<a name="line.983"></a>
-<span class="sourceLineNo">984</span>    // may overlap with other table operations or the table operation may<a name="line.984"></a>
-<span class="sourceLineNo">985</span>    // have completed before querying this API. We need to refactor to a<a name="line.985"></a>
-<span class="sourceLineNo">986</span>    // transaction system in the future to avoid these ambiguities.<a name="line.986"></a>
-<span class="sourceLineNo">987</span>    TableName tableName = ProtobufUtil.toTableName(req.getTableName());<a name="line.987"></a>
-<span class="sourceLineNo">988</span><a name="line.988"></a>
-<span class="sourceLineNo">989</span>    try {<a name="line.989"></a>
-<span class="sourceLineNo">990</span>      master.checkInitialized();<a name="line.990"></a>
-<span class="sourceLineNo">991</span>      Pair&lt;Integer,Integer&gt; pair = master.getAssignmentManager().getReopenStatus(tableName);<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      GetSchemaAlterStatusResponse.Builder ret = GetSchemaAlterStatusResponse.newBuilder();<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      ret.setYetToUpdateRegions(pair.getFirst());<a name="line.993"></a>
-<span class="sourceLineNo">994</span>      ret.setTotalRegions(pair.getSecond());<a name="line.994"></a>
-<span class="sourceLineNo">995</span>      return ret.build();<a name="line.995"></a>
-<span class="sourceLineNo">996</span>    } catch (IOException ioe) {<a name="line.996"></a>
-<span class="sourceLineNo">997</span>      throw new ServiceException(ioe);<a name="line.997"></a>
-<span class="sourceLineNo">998</span>    }<a name="line.998"></a>
-<span class="sourceLineNo">999</span>  }<a name="line.999"></a>
-<span class="sourceLineNo">1000</span><a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  /**<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>   * Get list of TableDescriptors for requested tables.<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>   * @param c Unused (set to null).<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * @param req GetTableDescriptorsRequest that contains:<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * - tableNames: requested tables, or if empty, all are requested<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @return GetTableDescriptorsResponse<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   * @throws ServiceException<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>   */<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>  @Override<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>  public GetTableDescriptorsResponse getTableDescriptors(RpcController c,<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>      GetTableDescriptorsRequest req) throws ServiceException {<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>    try {<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>      master.checkInitialized();<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span><a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>      final String regex = req.hasRegex() ? req.getRegex() : null;<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>      final String namespace = req.hasNamespace() ? req.getNamespace() : null;<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>      List&lt;TableName&gt; tableNameList = null;<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>      if (req.getTableNamesCount() &gt; 0) {<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>        tableNameList = new ArrayList&lt;TableName&gt;(req.getTableNamesCount());<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>        for (HBaseProtos.TableName tableNamePB: req.getTableNamesList()) {<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>          tableNameList.add(ProtobufUtil.toTableName(tableNamePB));<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>        }<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>      }<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span><a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>      List&lt;TableDescriptor&gt; descriptors = master.listTableDescriptors(namespace, regex,<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>          tableNameList, req.getIncludeSysTables());<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span><a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>      GetTableDescriptorsResponse.Builder builder = GetTableDescriptorsResponse.newBuilder();<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>      if (descriptors != null &amp;&amp; descriptors.size() &gt; 0) {<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>        // Add the table descriptors to the response<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>        for (TableDescriptor htd: descriptors) {<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>          builder.addTableSchema(ProtobufUtil.toTableSchema(htd));<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>        }<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>      }<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>      return builder.build();<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>    } catch (IOException ioe) {<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>      throw new ServiceException(ioe);<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>    }<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>  }<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span><a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>  /**<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>   * Get list of userspace table names<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>   * @param controller Unused (set to null).<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>   * @param req GetTableNamesRequest<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>   * @return GetTableNamesResponse<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>   * @throws ServiceException<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>   */<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>  @Override<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>  public GetTableNamesResponse getTableNames(RpcController controller,<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>      GetTableNamesRequest req) throws ServiceException {<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>    try {<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>      master.checkServiceStarted();<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span><a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>      final String regex = req.hasRegex() ? req.getRegex() : null;<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>      final String namespace = req.hasNamespace() ? req.getNamespace() : null;<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>      List&lt;TableName&gt; tableNames = master.listTableNames(namespace, regex,<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>          req.getIncludeSysTables());<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span><a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>      GetTableNamesResponse.Builder builder = GetTableNamesResponse.newBuilder();<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>      if (tableNames != null &amp;&amp; tableNames.size() &gt; 0) {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>        // Add the table names to the response<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>        for (TableName table: tableNames) {<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>          builder.addTableNames(ProtobufUtil.toProtoTableName(table));<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>        }<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>      }<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>      return builder.build();<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>    } catch (IOException e) {<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>      throw new ServiceException(e);<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>    }<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>  }<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span><a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>  @Override<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>  public GetTableStateResponse getTableState(RpcController controller,<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>      GetTableStateRequest request) throws ServiceException {<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>    try {<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>      master.checkServiceStarted();<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>      TableName tableName = ProtobufUtil.toTableName(request.getTableName());<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>      TableState ts = master.getTableStateManager().getTableState(tableName);<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>      GetTableStateResponse.Builder builder = GetTableStateResponse.newBuilder();<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>      builder.setTableState(ts.convert());<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>      return builder.build();<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>    } catch (IOException e) {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>      throw new ServiceException(e);<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>    }<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>  }<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span><a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>  @Override<a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>  public IsCatalogJanitorEnabledResponse isCatalogJanitorEnabled(RpcController c,<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>      IsCatalogJanitorEnabledRequest req) throws ServiceException {<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>    return IsCatalogJanitorEnabledResponse.newBuilder().setValue(<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>      master.isCatalogJanitorEnabled()).build();<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>  }<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span><a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>  @Override<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>  public IsCleanerChoreEnabledResponse isCleanerChoreEnabled(RpcController c,<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>                                                             IsCleanerChoreEnabledRequest req)<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    throws ServiceException {<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    return IsCleanerChoreEnabledResponse.newBuilder().setValue(master.isCleanerChoreEnabled())<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>                                        .build();<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>  }<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span><a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>  @Override<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>  public IsMasterRunningResponse isMasterRunning(RpcController c,<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>      IsMasterRunningRequest req) throws ServiceException {<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>    try {<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>      master.checkServiceStarted();<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>      return IsMasterRunningResponse.newBuilder().setIsMasterRunning(<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>        !master.isStopped()).build();<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>    } catch (IOException e) {<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>      throw new ServiceException(e);<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>    }<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>  }<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span><a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>  /**<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>   * Checks if the specified procedure is done.<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>   * @return true if the procedure is done, false if the procedure is in the process of completing<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>   * @throws ServiceException if invalid procedure or failed procedure with progress failure reason.<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>   */<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span>  @Override<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  public IsProcedureDoneResponse isProcedureDone(RpcController controller,<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>      IsProcedureDoneRequest request) throws ServiceException {<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>    try {<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>      master.checkInitialized();<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>      ProcedureDescription desc = request.getProcedure();<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>      MasterProcedureManager mpm = master.getMasterProcedureManagerHost().getProcedureManager(<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>        desc.getSignature());<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>      if (mpm == null) {<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>        throw new ServiceException("The procedure is not registered: "<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>          + desc.getSignature());<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>      }<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>      LOG.debug("Checking to see if procedure from request:"<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>        + desc.getSignature() + " is done");<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span><a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>      IsProcedureDoneResponse.Builder builder =<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>        IsProcedureDoneResponse.newBuilder();<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>      boolean done = mpm.isProcedureDone(desc);<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span>      builder.setDone(done);<a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>      return builder.build();<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>    } catch (ForeignException e) {<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>      throw new ServiceException(e.getCause());<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>    } catch (IOException e) {<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>      throw new ServiceException(e);<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>    }<a name="line.1143"></a>
-<span class="sourceLineNo">1144</span>  }<a name="line.1144"></a>
-<span class="sourceLineNo">1145</span><a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>  /**<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>   * Checks if the specified snapshot is done.<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>   * @return true if the snapshot is in file system ready to use,<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span>   *   false if the snapshot is in the process of completing<a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>   * @throws ServiceException wrapping UnknownSnapshotException if invalid snapshot, or<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>   *  a wrapped HBaseSnapshotException with progress failure reason.<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>   */<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span>  @Override<a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>  public IsSnapshotDoneResponse isSnapshotDone(RpcController controller,<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>      IsSnapshotDoneRequest request) throws ServiceException {<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span>    LOG.debug("Checking to see if snapshot from request:" +<a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>      ClientSnapshotDescriptionUtils.toString(request.getSnapshot()) + " is done");<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>    try {<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>      master.checkInitialized();<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>      IsSnapshotDoneResponse.Builder builder = IsSnapshotDoneResponse.newBuilder();<a name="line.1160"></a>
-<span class="sourceLineNo">1161</span>      boolean done = master.snapshotManager.isSnapshotDone(request.getSnapshot());<a name="line.1161"></a>
-<span class="sourceLineNo">1162</span>      builder.setDone(done);<a name="line.1162"></a>
-<span class="sourceLineNo">1163</span>      return builder.build();<a name="line.1163"></a>
-<span class="sourceLineNo">1164</span>    } catch (ForeignException e) {<a name="line.1164"></a>
-<span class="sourceLineNo">1165</span>      throw new ServiceException(e.getCause());<a name="line.1165"></a>
-<span class="sourceLineNo">1166</span>    } catch (IOException e) {<a name="line.1166"></a>
-<span class="sourceLineNo">1167</span>      throw new ServiceException(e);<a name="line.1167"></a>
-<span class="sourceLineNo">1168</span>    }<a name="line.1168"></a>
-<span class="sourceLineNo">1169</span>  }<a name="line.1169"></a>
-<span class="sourceLineNo">1170</span><a name="line.1170"></a>
-<span class="sourceLineNo">1171</span>  @Override<a name="line.1171"></a>
-<span class="sourceLineNo">1172</span>  public GetProcedureResultResponse getProcedureResult(RpcController controller,<a name="line.1172"></a>
-<span class="sourceLineNo">1173</span>      GetProcedureResultRequest request) throws ServiceException {<a name="line.1173"></a>
-<span class="sourceLineNo">1174</span>    LOG.debug("Checking to see if procedure is done pid=" + request.getProcId());<a name="line.1174"></a>
-<span class="sourceLineNo">1175</span>    try {<a name="line.1175"></a>
-<span class="sourceLineNo">1176</span>      master.checkInitialized();<a name="line.1176"></a>
-<span class="sourceLineNo">1177</span>      GetProcedureResultResponse.Builder builder = GetProcedureResultResponse.newBuilder();<a name="line.1177"></a>
-<span class="sourceLineNo">1178</span>      long procId = request.getProcId();<a name="line.1178"></a>
-<span class="sourceLineNo">1179</span>      ProcedureExecutor&lt;?&gt; executor = master.getMasterProcedureExecutor();<a name="line.1179"></a>
-<span class="sourceLineNo">1180</span>      Procedure&lt;?&gt; result = executor.getResultOrProcedure(procId);<a name="line.1180"></a>
-<span class="sourceLineNo">1181</span>      if (result != null) {<a name="line.1181"></a>
-<span class="sourceLineNo">1182</span>        builder.setSubmittedTime(result.getSubmittedTime());<a name="line.1182"></a>
-<span class="sourceLineNo">1183</span>        builder.setLastUpdate(result.getLastUpdate());<a name="line.1183"></a>
-<span class="sourceLineNo">1184</span>        if (executor.isFinished(procId)) {<a name="line.1184"></a>
-<span class="sourceLineNo">1185</span>          builder.setState(GetProcedureResultResponse.State.FINISHED);<a name="line.1185"></a>
-<span class="sourceLineNo">1186</span>          if (result.isFailed()) {<a name="line.1186"></a>
-<span class="sourceLineNo">1187</span>            IOException exception = result.getException().unwrapRemoteIOException();<a name="line.1187"></a>
-<span class="sourceLineNo">1188</span>            builder.setException(ForeignExceptionUtil.toProtoForeignException(exception));<a name="line.1188"></a>
-<span class="sourceLineNo">1189</span>          }<a name="line.1189"></a>
-<span class="sourceLineNo">1190</span>          byte[] resultData = result.getResult();<a name="line.1190"></a>
-<span class="sourceLineNo">1191</span>          if (resultData != null) {<a name="line.1191"></a>
-<span class="sourceLineNo">1192</span>            builder.setResult(UnsafeByteOperations.unsafeWrap(resultData));<a name="line.1192"></a>
-<span class="sourceLineNo">1193</span>          }<a name="line.1193"></a>
-<span class="sourceLineNo">1194</span>          master.getMasterProcedureExecutor().removeResult(request.getProcId());<a name="line.1194"></a>
-<span class="sourceLineNo">1195</span>        } else {<a name="line.1195"></a>
-<span class="sourceLineNo">1196</span>          builder.setState(GetProcedureResultResponse.State.RUNNING);<a name="line.1196"></a>
-<span class="sourceLineNo">1197</span>        }<a name="line.1197"></a>
-<span class="sourceLineNo">1198</span>      } else {<a name="line.1198"></a>
-<span class="sourceLineNo">1199</span>        builder.setState(GetProcedureResultResponse.State.NOT_FOUND);<a name="line.1199"></a>
-<span class="sourceLineNo">1200</span>      }<a name="line.1200"></a>
-<span class="sourceLineNo">1201</span>      return builder.build();<a name="line.1201"></a>
-<span class="sourceLineNo">1202</span>    } catch (IOException e) {<a name="line.1202"></a>
-<span class="sourceLineNo">1203</span>      throw new ServiceException(e);<a name="line.1203"></a>
-<span class="sourceLineNo">1204</span>    }<a name="line.1204"></a>
-<span class="sourceLineNo">1205</span>  }<a name="line.1205"></a>
-<span class="sourceLineNo">1206</span><a name="line.1206"></a>
-<span class="sourceLineNo">1207</span>  @Override<a name="line.1207"></a>
-<span class="sourceLineNo">1208</span>  public AbortProcedureResponse abortProcedure(<a name="line.1208"></a>
-<span class="sourceLineNo">1209</span>      RpcController rpcController, AbortProcedureRequest request) throws ServiceException {<a name="line.1209"></a>
-<span class="sourceLineNo">1210</span>    try {<a name="line.1210"></a>
-<span class="sourceLineNo">1211</span>      AbortProcedureResponse.Builder response = AbortProcedureResponse.newBuilder();<a name="line.1211"></a>
-<span class="sourceLineNo">1212</span>      boolean abortResult =<a name="line.1212"></a>
-<span class="sourceLineNo">1213</span>          master.abortProcedure(request.getProcId(), request.getMayInterruptIfRunning());<a name="line.1213"></a>
-<span class="sourceLineNo">1214</span>      response.setIsProcedureAborted(abortResult);<a name="line.1214"></a>
-<span class="sourceLineNo">1215</span>      return response.build();<a name="line.1215"></a>
-<span class="sourceLineNo">1216</span>    } catch (IOException e) {<a name="line.1216"></a>
-<span class="sourceLineNo">1217</span>      throw new ServiceException(e);<a name="line.1217"></a>
-<span class="sourceLineNo">1218</span>    }<a name="line.1218"></a>
-<span class="sourceLineNo">1219</span>  }<a name="line.1219"></a>
-<span class="sourceLineNo">1220</span><a name="line.1220"></a>
-<span class="sourceLineNo">1221</span>  @Override<a name="line.1221"></a>
-<span class="sourceLineNo">1222</span>  public ListNamespaceDescriptorsResponse listNamespaceDescriptors(RpcController c,<a name="line.1222"></a>
-<span class="sourceLineNo">1223</span>      ListNamespaceDescriptorsRequest request) throws ServiceException {<a name="line.1223"></a>
-<span class="sourceLineNo">1224</span>    try {<a name="line.1224"></a>
-<span class="sourceLineNo">1225</span>      ListNamespaceDescriptorsResponse.Builder response =<a name="line.1225"></a>
-<span class="sourceLineNo">1226</span>        ListNamespaceDescriptorsResponse.newBuilder();<a name="line.1226"></a>
-<span class="sourceLineNo">1227</span>      for(NamespaceDescriptor ns: master.getNamespaces()) {<a name="line.1227"></a>
-<span class="sourceLineNo">1228</span>        response.addNamespaceDescriptor(ProtobufUtil.toProtoNamespaceDescriptor(ns));<a name="line.1228"></a>
-<span class="sourceLineNo">1229</span>      }<a name="line.1229"></a>
-<span class="sourceLineNo">1230</span>      return response.build();<a name="line.1230"></a>
-<span class="sourceLineNo">1231</span>    } catch (IOException e) {<a name="line.1231"></a>
-<span class="sourceLineNo">1232</span>      throw new ServiceException(e);<a name="line.1232"></a>
-<span class="sourceLineNo">1233</span>    }<a name="line.1233"></a>
-<span class="sourceLineNo">1234</span>  }<a name="line.1234"></a>
-<span class="sourceLineNo">1235</span><a name="line.1235"></a>
-<span class="sourceLineNo">1236</span>  @Override<a name="line.1236"></a>
-<span class="sourceLineNo">1237</span>  public GetProceduresResponse getProcedures(<a name="line.1237"></a>
-<span class="sourceLineNo">1238</span>      RpcController rpcController,<a name="line.1238"></a>
-<span class="sourceLineNo">1239</span>      GetProceduresRequest request) throws ServiceException {<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span>    try {<a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>      final GetProceduresResponse.Builder response = GetProceduresResponse.newBuilder();<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>      for (Procedure&lt;?&gt; p: master.getProcedures()) {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>        response.addProcedure(ProcedureUtil.convertToProtoProcedure(p));<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>      }<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>      return response.build();<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>    } catch (IOException e) {<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>      throw new ServiceException(e);<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span>    }<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span>  }<a name="line.1249"></a>
-<span class="sourceLineNo">1250</span><a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>  @Override<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>  public GetLocksResponse getLocks(<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>      RpcController controller,<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>      GetLocksRequest request) throws ServiceException {<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>    try {<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>      final GetLocksResponse.Builder builder = GetLocksResponse.newBuilder();<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span><a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>      for (LockedResource lockedResource: master.getLocks()) {<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>        builder.addLock(ProcedureUtil.convertToProtoLockedResource(lockedResource));<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>      }<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span><a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>      return builder.build();<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>    } catch (IOException e) {<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span>      throw new ServiceException(e);<a name="line.1264"></a>
-<span class="sourceLineNo">1265</span>    }<a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>  }<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span><a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>  @Override<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>  public ListTableDescriptorsByNamespaceResponse listTableDescriptorsByNamespace(RpcController c,<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>      ListTableDescriptorsByNamespaceRequest request) throws ServiceException {<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>    try {<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span>      ListTableDescriptorsByNamespaceResponse.Builder b =<a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>          ListTableDescriptorsByNamespaceResponse.newBuilder();<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>      for (TableDescriptor htd : master<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>          .listTableDescriptorsByNamespace(request.getNamespaceName())) {<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>        b.addTableSchema(ProtobufUtil.toTableSchema(htd));<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span>      }<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>      return b.build();<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>    } catch (IOException e) {<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>      throw new ServiceException(e);<a name="line.1280"></a>
-<span class="sourceLineNo">1281</span>    }<a name="line.1281"></a>
-<span class="sourceLineNo">1282</span>  }<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span><a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>  @Override<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>  public ListTableNamesByNamespaceResponse listTableNamesByNamespace(RpcController c,<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>      ListTableNamesByNamespaceRequest request) throws ServiceException {<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span>    try {<a name="line.1287"></a>
-<span class="sourceLineNo">1288</span>      ListTableNamesByNamespaceResponse.Builder b =<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>        ListTableNamesByNamespaceResponse.newBuilder();<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>      for (TableName tableName: master.listTableNamesByNamespace(request.getNamespaceName())) {<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>        b.addTableName(ProtobufUtil.toProtoTableName(tableName));<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span>      }<a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>      return b.build();<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>    } catch (IOException e) {<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>      throw new ServiceException(e);<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span>    }<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span>  }<a name="line.1297"></a>
-<span class="sourceLineNo">1298</span><a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>  @Override<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>  public ModifyColumnResponse modifyColumn(RpcController controller,<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>      ModifyColumnRequest req) throws ServiceException {<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span>    try {<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>      long procId = master.modifyColumn(<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>        ProtobufUtil.toTableName(req.getTableName()),<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>        ProtobufUtil.toColumnFamilyDescriptor(req.getColumnFamilies()),<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>        req.getNonceGroup(),<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span>        req.getNonce());<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>      if (procId == -1) {<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>        // This mean operation was not performed in server, so do not set any procId<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>        return ModifyColumnResponse.newBuilder().build();<a name="line.1310"></a>
-<span class="sourceLineNo">1311</span>      } else {<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span>        return ModifyColumnResponse.newBuilder().setProcId(procId).build();<a name="line.1312"></a>
-<span class="sourceLineNo">1313</span>      }<a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>    } catch (IOException ioe) {<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>      throw new ServiceException(ioe);<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span>    }<a name="line.1316"></a>
-<span class="sourceLineNo">1317</span>  }<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span><a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>  @Override<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>  public ModifyNamespaceResponse modifyNamespace(RpcController controller,<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>      ModifyNamespaceRequest request) throws ServiceException {<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span>    try {<a name="line.1322"></a>
-<span class="sourceLineNo">1323</span>      long procId = master.modifyNamespace(<a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>        ProtobufUtil.toNamespaceDescriptor(request.getNamespaceDescriptor()),<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>        request.getNonceGroup(),<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>        request.getNonce());<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span>      return ModifyNamespaceResponse.newBuilder().setProcId(procId).build();<a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>    } catch (IOException e) {<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>      throw new ServiceException(e);<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>    }<a name="line.1330"></a>
-<span class="sourceLineNo">1331</span>  }<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span><a name="line.1332"></a>
-<span class="sourceLineNo">1333</span>  @Override<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span>  public ModifyTableResponse modifyTable(RpcController controller,<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>      ModifyTableRequest req) throws ServiceException {<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span>    try {<a name="line.1336"></a>
-<span class="sourceLineNo">1337</span>      long procId = master.modifyTable(<a name="line.1337"></a>
-<span class="sourceLineNo">1338</span>        ProtobufUtil.toTableName(req.getTableName()),<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>        ProtobufUtil.toTableDescriptor(req.getTableSchema()),<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span>        req.getNonceGroup(),<a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>        req.getNonce());<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>      return ModifyTableResponse.newBuilder().setProcId(procId).build();<a name="line.1342"></a>
-<span class="sourceLineNo">1343</span>    } catch (IOException ioe) {<a name="line.1343"></a>
-<span class="sourceLineNo">1344</span>      throw new ServiceException(ioe);<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span>    }<a name="line.1345"></a>
-<span class="sourceLineNo">1346</span>  }<a name="line.1346"></a>
-<span class="sourceLineNo">1347</span><a name="line.1347"></a>
-<span class="sourceLineNo">1348</span>  @Override<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span>  public MoveRegionResponse moveRegion(RpcController controller,<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span>      MoveRegionRequest req) throws ServiceException {<a name="line.1350"></a>
-<span class="sourceLineNo">1351</span>    final byte [] encodedRegionName = req.getRegion().getValue().toByteArray();<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span>    RegionSpecifierType type = req.getRegion().getType();<a name="line.1352"></a>
-<span class="sourceLineNo">1353</span>    final byte [] destServerName = (req.hasDestServerName())?<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span>      Bytes.toBytes(ProtobufUtil.toServerName(req.getDestServerName()).getServerName()):null;<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span>    MoveRegionResponse mrr = MoveRegionResponse.newBuilder().build();<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span><a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>    if (type != RegionSpecifierType.ENCODED_REGION_NAME) {<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span>      LOG.warn("moveRegion specifier type: expected: " + RegionSpecifierType.ENCODED_REGION_NAME<a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>        + " actual: " + type);<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span>    }<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span><a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>    try {<a name="line.1362"></a>
-<span class="sourceLine

<TRUNCATED>

[21/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterWalManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterWalManager.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterWalManager.html
index a7df46f..f0b26f3 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterWalManager.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/MasterWalManager.html
@@ -152,195 +152,219 @@
 <span class="sourceLineNo">144</span>  }<a name="line.144"></a>
 <span class="sourceLineNo">145</span><a name="line.145"></a>
 <span class="sourceLineNo">146</span>  /**<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * @return listing of ServerNames found in the filesystem under the WAL directory<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   *   that COULD BE 'alive'; excludes those that have a '-splitting' suffix as these are already<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   *   being split -- they cannot be 'alive'.<a name="line.149"></a>
+<span class="sourceLineNo">147</span>   * Get Servernames which are currently splitting; paths have a '-splitting' suffix.<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * @return ServerName<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * @throws IOException IOException<a name="line.149"></a>
 <span class="sourceLineNo">150</span>   */<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  public Set&lt;ServerName&gt; getLiveServersFromWALDir() throws IOException {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    Path walDirPath = new Path(rootDir, HConstants.HREGION_LOGDIR_NAME);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    FileStatus[] walDirForLiveServers = FSUtils.listStatus(fs, walDirPath,<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      p -&gt; !p.getName().endsWith(AbstractFSWALProvider.SPLITTING_EXT));<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    if (walDirForLiveServers == null) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      return Collections.emptySet();<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    return Stream.of(walDirForLiveServers).map(s -&gt; {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      ServerName serverName = AbstractFSWALProvider.getServerNameFromWALDirectoryName(s.getPath());<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      if (serverName == null) {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        LOG.warn("Log folder {} doesn't look like its name includes a " +<a name="line.161"></a>
-<span class="sourceLineNo">162</span>          "region server name; leaving in place. If you see later errors about missing " +<a name="line.162"></a>
-<span class="sourceLineNo">163</span>          "write ahead logs they may be saved in this location.", s.getPath());<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        return null;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      }<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      return serverName;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    }).filter(s -&gt; s != null).collect(Collectors.toSet());<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>  /**<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * Inspect the log directory to find dead servers which need recovery work<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * @return A set of ServerNames which aren't running but still have WAL files left in file system<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * @deprecated With proc-v2, we can record the crash server with procedure store, so do not need<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   *             to scan the wal directory to find out the splitting wal directory any more. Leave<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   *             it here only because {@code RecoverMetaProcedure}(which is also deprecated) uses<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   *             it.<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  @Deprecated<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  public Set&lt;ServerName&gt; getFailedServersFromLogFolders() {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    boolean retrySplitting = !conf.getBoolean("hbase.hlog.split.skip.errors",<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        WALSplitter.SPLIT_SKIP_ERRORS_DEFAULT);<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>    Set&lt;ServerName&gt; serverNames = new HashSet&lt;&gt;();<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    Path logsDirPath = new Path(this.rootDir, HConstants.HREGION_LOGDIR_NAME);<a name="line.184"></a>
-<span class="sourceLineNo">185</span><a name="line.185"></a>
-<span class="sourceLineNo">186</span>    do {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      if (services.isStopped()) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>        LOG.warn("Master stopped while trying to get failed servers.");<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        break;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      try {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        if (!this.fs.exists(logsDirPath)) return serverNames;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        FileStatus[] logFolders = FSUtils.listStatus(this.fs, logsDirPath, null);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>        // Get online servers after getting log folders to avoid log folder deletion of newly<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        // checked in region servers . see HBASE-5916<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        Set&lt;ServerName&gt; onlineServers = services.getServerManager().getOnlineServers().keySet();<a name="line.196"></a>
-<span class="sourceLineNo">197</span><a name="line.197"></a>
-<span class="sourceLineNo">198</span>        if (logFolders == null || logFolders.length == 0) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>          LOG.debug("No log files to split, proceeding...");<a name="line.199"></a>
-<span class="sourceLineNo">200</span>          return serverNames;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        }<a name="line.201"></a>
-<span class="sourceLineNo">202</span>        for (FileStatus status : logFolders) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>          FileStatus[] curLogFiles = FSUtils.listStatus(this.fs, status.getPath(), null);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>          if (curLogFiles == null || curLogFiles.length == 0) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>            // Empty log folder. No recovery needed<a name="line.205"></a>
-<span class="sourceLineNo">206</span>            continue;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>          }<a name="line.207"></a>
-<span class="sourceLineNo">208</span>          final ServerName serverName = AbstractFSWALProvider.getServerNameFromWALDirectoryName(<a name="line.208"></a>
-<span class="sourceLineNo">209</span>              status.getPath());<a name="line.209"></a>
-<span class="sourceLineNo">210</span>          if (null == serverName) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>            LOG.warn("Log folder " + status.getPath() + " doesn't look like its name includes a " +<a name="line.211"></a>
-<span class="sourceLineNo">212</span>                "region server name; leaving in place. If you see later errors about missing " +<a name="line.212"></a>
-<span class="sourceLineNo">213</span>                "write ahead logs they may be saved in this location.");<a name="line.213"></a>
-<span class="sourceLineNo">214</span>          } else if (!onlineServers.contains(serverName)) {<a name="line.214"></a>
-<span class="sourceLineNo">215</span>            LOG.info("Log folder " + status.getPath() + " doesn't belong "<a name="line.215"></a>
-<span class="sourceLineNo">216</span>                + "to a known region server, splitting");<a name="line.216"></a>
-<span class="sourceLineNo">217</span>            serverNames.add(serverName);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>          } else {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>            LOG.info("Log folder " + status.getPath() + " belongs to an existing region server");<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>        retrySplitting = false;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      } catch (IOException ioe) {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        LOG.warn("Failed getting failed servers to be recovered.", ioe);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>        if (!checkFileSystem()) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>          LOG.warn("Bad Filesystem, exiting");<a name="line.226"></a>
-<span class="sourceLineNo">227</span>          Runtime.getRuntime().halt(1);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        }<a name="line.228"></a>
-<span class="sourceLineNo">229</span>        try {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>          if (retrySplitting) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>            Thread.sleep(conf.getInt("hbase.hlog.split.failure.retry.interval", 30 * 1000));<a name="line.231"></a>
-<span class="sourceLineNo">232</span>          }<a name="line.232"></a>
-<span class="sourceLineNo">233</span>        } catch (InterruptedException e) {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>          LOG.warn("Interrupted, aborting since cannot return w/o splitting");<a name="line.234"></a>
-<span class="sourceLineNo">235</span>          Thread.currentThread().interrupt();<a name="line.235"></a>
-<span class="sourceLineNo">236</span>          retrySplitting = false;<a name="line.236"></a>
-<span class="sourceLineNo">237</span>          Runtime.getRuntime().halt(1);<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>    } while (retrySplitting);<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    return serverNames;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  }<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>  public void splitLog(final ServerName serverName) throws IOException {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    splitLog(Collections.&lt;ServerName&gt;singleton(serverName));<a name="line.246"></a>
-<span class="sourceLineNo">247</span>  }<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>  /**<a name="line.249"></a>
-<span class="sourceLineNo">250</span>   * Specialized method to handle the splitting for meta WAL<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   * @param serverName logs belonging to this server will be split<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   */<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  public void splitMetaLog(final ServerName serverName) throws IOException {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    splitMetaLog(Collections.&lt;ServerName&gt;singleton(serverName));<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  }<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>  /**<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   * Specialized method to handle the splitting for meta WAL<a name="line.258"></a>
-<span class="sourceLineNo">259</span>   * @param serverNames logs belonging to these servers will be split<a name="line.259"></a>
-<span class="sourceLineNo">260</span>   */<a name="line.260"></a>
-<span class="sourceLineNo">261</span>  public void splitMetaLog(final Set&lt;ServerName&gt; serverNames) throws IOException {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    splitLog(serverNames, META_FILTER);<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>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="UL_UNRELEASED_LOCK", justification=<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      "We only release this lock when we set it. Updates to code that uses it should verify use " +<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      "of the guard boolean.")<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  private List&lt;Path&gt; getLogDirs(final Set&lt;ServerName&gt; serverNames) throws IOException {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    List&lt;Path&gt; logDirs = new ArrayList&lt;&gt;();<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    boolean needReleaseLock = false;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    if (!this.services.isInitialized()) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      // during master initialization, we could have multiple places splitting a same wal<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      // XXX: Does this still exist after we move to proc-v2?<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      this.splitLogLock.lock();<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      needReleaseLock = true;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    try {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      for (ServerName serverName : serverNames) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        Path logDir = new Path(this.rootDir,<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          AbstractFSWALProvider.getWALDirectoryName(serverName.toString()));<a name="line.280"></a>
-<span class="sourceLineNo">281</span>        Path splitDir = logDir.suffix(AbstractFSWALProvider.SPLITTING_EXT);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        // Rename the directory so a rogue RS doesn't create more WALs<a name="line.282"></a>
-<span class="sourceLineNo">283</span>        if (fs.exists(logDir)) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>          if (!this.fs.rename(logDir, splitDir)) {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>            throw new IOException("Failed fs.rename for log split: " + logDir);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>          }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          logDir = splitDir;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>          LOG.debug("Renamed region directory: " + splitDir);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        } else if (!fs.exists(splitDir)) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>          LOG.info("Log dir for server " + serverName + " does not exist");<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          continue;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>        }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        logDirs.add(splitDir);<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      }<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    } catch (IOException ioe) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      if (!checkFileSystem()) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        this.services.abort("Aborting due to filesystem unavailable", ioe);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        throw ioe;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    } finally {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      if (needReleaseLock) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        this.splitLogLock.unlock();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      }<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    return logDirs;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  }<a name="line.306"></a>
-<span class="sourceLineNo">307</span><a name="line.307"></a>
-<span class="sourceLineNo">308</span>  public void splitLog(final Set&lt;ServerName&gt; serverNames) throws IOException {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    splitLog(serverNames, NON_META_FILTER);<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>  /**<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * This method is the base split method that splits WAL files matching a filter. Callers should<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   * pass the appropriate filter for meta and non-meta WALs.<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * @param serverNames logs belonging to these servers will be split; this will rename the log<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   *                    directory out from under a soft-failed server<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   */<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public void splitLog(final Set&lt;ServerName&gt; serverNames, PathFilter filter) throws IOException {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    long splitTime = 0, splitLogSize = 0;<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    List&lt;Path&gt; logDirs = getLogDirs(serverNames);<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>    splitLogManager.handleDeadWorkers(serverNames);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    splitTime = EnvironmentEdgeManager.currentTime();<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    splitLogSize = splitLogManager.splitLogDistributed(serverNames, logDirs, filter);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    splitTime = EnvironmentEdgeManager.currentTime() - splitTime;<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>    if (this.metricsMasterFilesystem != null) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      if (filter == META_FILTER) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        this.metricsMasterFilesystem.addMetaWALSplit(splitTime, splitLogSize);<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      } else {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        this.metricsMasterFilesystem.addSplit(splitTime, splitLogSize);<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">151</span>  public Set&lt;ServerName&gt; getSplittingServersFromWALDir() throws  IOException {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    return getServerNamesFromWALDirPath(<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      p -&gt; p.getName().endsWith(AbstractFSWALProvider.SPLITTING_EXT));<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>   * Get Servernames that COULD BE 'alive'; excludes those that have a '-splitting' suffix as these<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   * are already being split -- they cannot be 'alive'.<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   * @return ServerName<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   * @throws IOException IOException<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   */<a name="line.161"></a>
+<span class="sourceLineNo">162</span>  public Set&lt;ServerName&gt; getLiveServersFromWALDir() throws IOException {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    return getServerNamesFromWALDirPath(<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      p -&gt; !p.getName().endsWith(AbstractFSWALProvider.SPLITTING_EXT));<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>   * @return listing of ServerNames found by parsing WAL directory paths in FS.<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>  public Set&lt;ServerName&gt; getServerNamesFromWALDirPath(final PathFilter filter) throws IOException {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    FileStatus[] walDirForServerNames = getWALDirPaths(filter);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    return Stream.of(walDirForServerNames).map(s -&gt; {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      ServerName serverName = AbstractFSWALProvider.getServerNameFromWALDirectoryName(s.getPath());<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      if (serverName == null) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        LOG.warn("Log folder {} doesn't look like its name includes a " +<a name="line.176"></a>
+<span class="sourceLineNo">177</span>          "region server name; leaving in place. If you see later errors about missing " +<a name="line.177"></a>
+<span class="sourceLineNo">178</span>          "write ahead logs they may be saved in this location.", s.getPath());<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        return null;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      }<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      return serverName;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    }).filter(s -&gt; s != null).collect(Collectors.toSet());<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>   * @return List of all RegionServer WAL dirs; i.e. this.rootDir/HConstants.HREGION_LOGDIR_NAME.<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   */<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  public FileStatus[] getWALDirPaths(final PathFilter filter) throws IOException {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    Path walDirPath = new Path(rootDir, HConstants.HREGION_LOGDIR_NAME);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    FileStatus[] walDirForServerNames = FSUtils.listStatus(fs, walDirPath, filter);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    return walDirForServerNames == null? new FileStatus[0]: walDirForServerNames;<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>  /**<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   * Inspect the log directory to find dead servers which need recovery work<a name="line.195"></a>
+<span class="sourceLineNo">196</span>   * @return A set of ServerNames which aren't running but still have WAL files left in file system<a name="line.196"></a>
+<span class="sourceLineNo">197</span>   * @deprecated With proc-v2, we can record the crash server with procedure store, so do not need<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   *             to scan the wal directory to find out the splitting wal directory any more. Leave<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   *             it here only because {@code RecoverMetaProcedure}(which is also deprecated) uses<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   *             it.<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   */<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  @Deprecated<a name="line.202"></a>
+<span class="sourceLineNo">203</span>  public Set&lt;ServerName&gt; getFailedServersFromLogFolders() {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    boolean retrySplitting = !conf.getBoolean("hbase.hlog.split.skip.errors",<a name="line.204"></a>
+<span class="sourceLineNo">205</span>        WALSplitter.SPLIT_SKIP_ERRORS_DEFAULT);<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>    Set&lt;ServerName&gt; serverNames = new HashSet&lt;&gt;();<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    Path logsDirPath = new Path(this.rootDir, HConstants.HREGION_LOGDIR_NAME);<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span>    do {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      if (services.isStopped()) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        LOG.warn("Master stopped while trying to get failed servers.");<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        break;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      }<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      try {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        if (!this.fs.exists(logsDirPath)) return serverNames;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        FileStatus[] logFolders = FSUtils.listStatus(this.fs, logsDirPath, null);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        // Get online servers after getting log folders to avoid log folder deletion of newly<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        // checked in region servers . see HBASE-5916<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        Set&lt;ServerName&gt; onlineServers = services.getServerManager().getOnlineServers().keySet();<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>        if (logFolders == null || logFolders.length == 0) {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>          LOG.debug("No log files to split, proceeding...");<a name="line.223"></a>
+<span class="sourceLineNo">224</span>          return serverNames;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        }<a name="line.225"></a>
+<span class="sourceLineNo">226</span>        for (FileStatus status : logFolders) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>          FileStatus[] curLogFiles = FSUtils.listStatus(this.fs, status.getPath(), null);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>          if (curLogFiles == null || curLogFiles.length == 0) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>            // Empty log folder. No recovery needed<a name="line.229"></a>
+<span class="sourceLineNo">230</span>            continue;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>          }<a name="line.231"></a>
+<span class="sourceLineNo">232</span>          final ServerName serverName = AbstractFSWALProvider.getServerNameFromWALDirectoryName(<a name="line.232"></a>
+<span class="sourceLineNo">233</span>              status.getPath());<a name="line.233"></a>
+<span class="sourceLineNo">234</span>          if (null == serverName) {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>            LOG.warn("Log folder " + status.getPath() + " doesn't look like its name includes a " +<a name="line.235"></a>
+<span class="sourceLineNo">236</span>                "region server name; leaving in place. If you see later errors about missing " +<a name="line.236"></a>
+<span class="sourceLineNo">237</span>                "write ahead logs they may be saved in this location.");<a name="line.237"></a>
+<span class="sourceLineNo">238</span>          } else if (!onlineServers.contains(serverName)) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>            LOG.info("Log folder " + status.getPath() + " doesn't belong "<a name="line.239"></a>
+<span class="sourceLineNo">240</span>                + "to a known region server, splitting");<a name="line.240"></a>
+<span class="sourceLineNo">241</span>            serverNames.add(serverName);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>          } else {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>            LOG.info("Log folder " + status.getPath() + " belongs to an existing region server");<a name="line.243"></a>
+<span class="sourceLineNo">244</span>          }<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        }<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        retrySplitting = false;<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      } catch (IOException ioe) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        LOG.warn("Failed getting failed servers to be recovered.", ioe);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>        if (!checkFileSystem()) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>          LOG.warn("Bad Filesystem, exiting");<a name="line.250"></a>
+<span class="sourceLineNo">251</span>          Runtime.getRuntime().halt(1);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        }<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        try {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>          if (retrySplitting) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>            Thread.sleep(conf.getInt("hbase.hlog.split.failure.retry.interval", 30 * 1000));<a name="line.255"></a>
+<span class="sourceLineNo">256</span>          }<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        } catch (InterruptedException e) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>          LOG.warn("Interrupted, aborting since cannot return w/o splitting");<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          Thread.currentThread().interrupt();<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          retrySplitting = false;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>          Runtime.getRuntime().halt(1);<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>    } while (retrySplitting);<a name="line.264"></a>
+<span class="sourceLineNo">265</span><a name="line.265"></a>
+<span class="sourceLineNo">266</span>    return serverNames;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  }<a name="line.267"></a>
+<span class="sourceLineNo">268</span><a name="line.268"></a>
+<span class="sourceLineNo">269</span>  public void splitLog(final ServerName serverName) throws IOException {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    splitLog(Collections.&lt;ServerName&gt;singleton(serverName));<a name="line.270"></a>
+<span class="sourceLineNo">271</span>  }<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>  /**<a name="line.273"></a>
+<span class="sourceLineNo">274</span>   * Specialized method to handle the splitting for meta WAL<a name="line.274"></a>
+<span class="sourceLineNo">275</span>   * @param serverName logs belonging to this server will be split<a name="line.275"></a>
+<span class="sourceLineNo">276</span>   */<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  public void splitMetaLog(final ServerName serverName) throws IOException {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    splitMetaLog(Collections.&lt;ServerName&gt;singleton(serverName));<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>  /**<a name="line.281"></a>
+<span class="sourceLineNo">282</span>   * Specialized method to handle the splitting for meta WAL<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * @param serverNames logs belonging to these servers will be split<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   */<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  public void splitMetaLog(final Set&lt;ServerName&gt; serverNames) throws IOException {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    splitLog(serverNames, META_FILTER);<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>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="UL_UNRELEASED_LOCK", justification=<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      "We only release this lock when we set it. Updates to code that uses it should verify use " +<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      "of the guard boolean.")<a name="line.291"></a>
+<span class="sourceLineNo">292</span>  private List&lt;Path&gt; getLogDirs(final Set&lt;ServerName&gt; serverNames) throws IOException {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    List&lt;Path&gt; logDirs = new ArrayList&lt;&gt;();<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    boolean needReleaseLock = false;<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    if (!this.services.isInitialized()) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      // during master initialization, we could have multiple places splitting a same wal<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      // XXX: Does this still exist after we move to proc-v2?<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      this.splitLogLock.lock();<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      needReleaseLock = true;<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    }<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    try {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      for (ServerName serverName : serverNames) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        Path logDir = new Path(this.rootDir,<a name="line.303"></a>
+<span class="sourceLineNo">304</span>          AbstractFSWALProvider.getWALDirectoryName(serverName.toString()));<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        Path splitDir = logDir.suffix(AbstractFSWALProvider.SPLITTING_EXT);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        // Rename the directory so a rogue RS doesn't create more WALs<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        if (fs.exists(logDir)) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>          if (!this.fs.rename(logDir, splitDir)) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>            throw new IOException("Failed fs.rename for log split: " + logDir);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>          }<a name="line.310"></a>
+<span class="sourceLineNo">311</span>          logDir = splitDir;<a name="line.311"></a>
+<span class="sourceLineNo">312</span>          LOG.debug("Renamed region directory: " + splitDir);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>        } else if (!fs.exists(splitDir)) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>          LOG.info("Log dir for server " + serverName + " does not exist");<a name="line.314"></a>
+<span class="sourceLineNo">315</span>          continue;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>        }<a name="line.316"></a>
+<span class="sourceLineNo">317</span>        logDirs.add(splitDir);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      }<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    } catch (IOException ioe) {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      if (!checkFileSystem()) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        this.services.abort("Aborting due to filesystem unavailable", ioe);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>        throw ioe;<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      }<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    } finally {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      if (needReleaseLock) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        this.splitLogLock.unlock();<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    return logDirs;<a name="line.329"></a>
+<span class="sourceLineNo">330</span>  }<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public void splitLog(final Set&lt;ServerName&gt; serverNames) throws IOException {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    splitLog(serverNames, NON_META_FILTER);<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">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  /**<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * This method is the base split method that splits WAL files matching a filter. Callers should<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * pass the appropriate filter for meta and non-meta WALs.<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * @param serverNames logs belonging to these servers will be split; this will rename the log<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   *                    directory out from under a soft-failed server<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   */<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  public void splitLog(final Set&lt;ServerName&gt; serverNames, PathFilter filter) throws IOException {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    long splitTime = 0, splitLogSize = 0;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    List&lt;Path&gt; logDirs = getLogDirs(serverNames);<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>    splitLogManager.handleDeadWorkers(serverNames);<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    splitTime = EnvironmentEdgeManager.currentTime();<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    splitLogSize = splitLogManager.splitLogDistributed(serverNames, logDirs, filter);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    splitTime = EnvironmentEdgeManager.currentTime() - splitTime;<a name="line.349"></a>
+<span class="sourceLineNo">350</span><a name="line.350"></a>
+<span class="sourceLineNo">351</span>    if (this.metricsMasterFilesystem != null) {<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      if (filter == META_FILTER) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        this.metricsMasterFilesystem.addMetaWALSplit(splitTime, splitLogSize);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      } else {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        this.metricsMasterFilesystem.addSplit(splitTime, splitLogSize);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    }<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>}<a name="line.359"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html
index 1b8c609..b5a9f93 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html
@@ -123,77 +123,85 @@
 <span class="sourceLineNo">115</span>   * protection to prevent concurrency issues with server expiration operation.<a name="line.115"></a>
 <span class="sourceLineNo">116</span>   * @param deadServersFromPE the region servers which already have SCP associated.<a name="line.116"></a>
 <span class="sourceLineNo">117</span>   * @param liveServersFromWALDir the live region servers from wal directory.<a name="line.117"></a>
-<span class="sourceLineNo">118</span>   */<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  public void start(Set&lt;ServerName&gt; deadServersFromPE, Set&lt;ServerName&gt; liveServersFromWALDir)<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      throws KeeperException, IOException {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    LOG.info("Starting RegionServerTracker; {} have existing ServerCrashProcedures, {} " +<a name="line.121"></a>
-<span class="sourceLineNo">122</span>        "possibly 'live' servers.", deadServersFromPE.size(), liveServersFromWALDir.size());<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    watcher.registerListener(this);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    synchronized (this) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      List&lt;String&gt; servers =<a name="line.125"></a>
-<span class="sourceLineNo">126</span>        ZKUtil.listChildrenAndWatchForNewChildren(watcher, watcher.getZNodePaths().rsZNode);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      for (String n : servers) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        Pair&lt;ServerName, RegionServerInfo&gt; pair = getServerInfo(n);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        ServerName serverName = pair.getFirst();<a name="line.129"></a>
-<span class="sourceLineNo">130</span>        RegionServerInfo info = pair.getSecond();<a name="line.130"></a>
-<span class="sourceLineNo">131</span>        regionServers.add(serverName);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>        ServerMetrics serverMetrics = info != null ? ServerMetricsBuilder.of(serverName,<a name="line.132"></a>
-<span class="sourceLineNo">133</span>          VersionInfoUtil.getVersionNumber(info.getVersionInfo()),<a name="line.133"></a>
-<span class="sourceLineNo">134</span>          info.getVersionInfo().getVersion()) : ServerMetricsBuilder.of(serverName);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        serverManager.checkAndRecordNewServer(serverName, serverMetrics);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      serverManager.findDeadServersAndProcess(deadServersFromPE, liveServersFromWALDir);<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  }<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>  public void stop() {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    executor.shutdownNow();<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private synchronized void refresh() {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    List&lt;String&gt; names;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    try {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      names = ZKUtil.listChildrenAndWatchForNewChildren(watcher, watcher.getZNodePaths().rsZNode);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    } catch (KeeperException e) {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      // here we need to abort as we failed to set watcher on the rs node which means that we can<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      // not track the node deleted evetnt any more.<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      server.abort("Unexpected zk exception getting RS nodes", e);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      return;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    }<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    Set&lt;ServerName&gt; servers =<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      names.stream().map(ServerName::parseServerName).collect(Collectors.toSet());<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    for (Iterator&lt;ServerName&gt; iter = regionServers.iterator(); iter.hasNext();) {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      ServerName sn = iter.next();<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      if (!servers.contains(sn)) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>        LOG.info("RegionServer ephemeral node deleted, processing expiration [{}]", sn);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        serverManager.expireServer(sn);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        iter.remove();<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>    // here we do not need to parse the region server info as it is useless now, we only need the<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    // server name.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    boolean newServerAdded = false;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    for (ServerName sn : servers) {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      if (regionServers.add(sn)) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        newServerAdded = true;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        LOG.info("RegionServer ephemeral node created, adding [" + sn + "]");<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    }<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    if (newServerAdded &amp;&amp; server.isInitialized()) {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      // Only call the check to move servers if a RegionServer was added to the cluster; in this<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      // case it could be a server with a new version so it makes sense to run the check.<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      server.checkIfShouldMoveSystemRegionAsync();<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><a name="line.180"></a>
-<span class="sourceLineNo">181</span>  @Override<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  public void nodeChildrenChanged(String path) {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    if (path.equals(watcher.getZNodePaths().rsZNode) &amp;&amp; !server.isAborted() &amp;&amp;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      !server.isStopped()) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      executor.execute(this::refresh);<a name="line.185"></a>
+<span class="sourceLineNo">118</span>   * @param splittingServersFromWALDir Servers whose WALs are being actively 'split'.<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   */<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  public void start(Set&lt;ServerName&gt; deadServersFromPE, Set&lt;ServerName&gt; liveServersFromWALDir,<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      Set&lt;ServerName&gt; splittingServersFromWALDir)<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      throws KeeperException, IOException {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    LOG.info("Starting RegionServerTracker; {} have existing ServerCrashProcedures, {} " +<a name="line.123"></a>
+<span class="sourceLineNo">124</span>        "possibly 'live' servers, and {} 'splitting'.", deadServersFromPE.size(),<a name="line.124"></a>
+<span class="sourceLineNo">125</span>        liveServersFromWALDir.size(), splittingServersFromWALDir.size());<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    // deadServersFromPE is made from a list of outstanding ServerCrashProcedures.<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    // splittingServersFromWALDir are being actively split -- the directory in the FS ends in<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    // '-SPLITTING'. Each splitting server should have a corresponding SCP. Log if not.<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    splittingServersFromWALDir.stream().map(s -&gt; !deadServersFromPE.contains(s)).<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        forEach(s -&gt; LOG.error("{} has no matching ServerCrashProcedure", s));<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    watcher.registerListener(this);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    synchronized (this) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      List&lt;String&gt; servers =<a name="line.133"></a>
+<span class="sourceLineNo">134</span>        ZKUtil.listChildrenAndWatchForNewChildren(watcher, watcher.getZNodePaths().rsZNode);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      for (String n : servers) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>        Pair&lt;ServerName, RegionServerInfo&gt; pair = getServerInfo(n);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        ServerName serverName = pair.getFirst();<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        RegionServerInfo info = pair.getSecond();<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        regionServers.add(serverName);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        ServerMetrics serverMetrics = info != null ? ServerMetricsBuilder.of(serverName,<a name="line.140"></a>
+<span class="sourceLineNo">141</span>          VersionInfoUtil.getVersionNumber(info.getVersionInfo()),<a name="line.141"></a>
+<span class="sourceLineNo">142</span>          info.getVersionInfo().getVersion()) : ServerMetricsBuilder.of(serverName);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        serverManager.checkAndRecordNewServer(serverName, serverMetrics);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      }<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      serverManager.findDeadServersAndProcess(deadServersFromPE, liveServersFromWALDir);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    }<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>  public void stop() {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    executor.shutdownNow();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  }<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>  private synchronized void refresh() {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    List&lt;String&gt; names;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    try {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      names = ZKUtil.listChildrenAndWatchForNewChildren(watcher, watcher.getZNodePaths().rsZNode);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    } catch (KeeperException e) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      // here we need to abort as we failed to set watcher on the rs node which means that we can<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      // not track the node deleted evetnt any more.<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      server.abort("Unexpected zk exception getting RS nodes", e);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      return;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    }<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    Set&lt;ServerName&gt; servers =<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      names.stream().map(ServerName::parseServerName).collect(Collectors.toSet());<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    for (Iterator&lt;ServerName&gt; iter = regionServers.iterator(); iter.hasNext();) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      ServerName sn = iter.next();<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      if (!servers.contains(sn)) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        LOG.info("RegionServer ephemeral node deleted, processing expiration [{}]", sn);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        serverManager.expireServer(sn);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        iter.remove();<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>    // here we do not need to parse the region server info as it is useless now, we only need the<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    // server name.<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    boolean newServerAdded = false;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    for (ServerName sn : servers) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      if (regionServers.add(sn)) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        newServerAdded = true;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        LOG.info("RegionServer ephemeral node created, adding [" + sn + "]");<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>    if (newServerAdded &amp;&amp; server.isInitialized()) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      // Only call the check to move servers if a RegionServer was added to the cluster; in this<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      // case it could be a server with a new version so it makes sense to run the check.<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      server.checkIfShouldMoveSystemRegionAsync();<a name="line.185"></a>
 <span class="sourceLineNo">186</span>    }<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">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>  @Override<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  public void nodeChildrenChanged(String path) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    if (path.equals(watcher.getZNodePaths().rsZNode) &amp;&amp; !server.isAborted() &amp;&amp;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      !server.isStopped()) {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      executor.execute(this::refresh);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    }<a name="line.194"></a>
+<span class="sourceLineNo">195</span>  }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>}<a name="line.196"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/master/TableNamespaceManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/TableNamespaceManager.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/TableNamespaceManager.html
index a1f5165..73a8028 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/TableNamespaceManager.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/TableNamespaceManager.html
@@ -391,18 +391,22 @@
 <span class="sourceLineNo">383</span>      return;<a name="line.383"></a>
 <span class="sourceLineNo">384</span>    }<a name="line.384"></a>
 <span class="sourceLineNo">385</span>    try {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      this.zkNamespaceManager.stop();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    } catch (IOException ioe) {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      LOG.warn("Failed NamespaceManager close", ioe);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    }<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    try {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      this.nsTable.close();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    } catch (IOException ioe) {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      LOG.warn("Failed Namespace Table close", ioe);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    }<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    this.stopped = true;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>}<a name="line.397"></a>
+<span class="sourceLineNo">386</span>      if (this.zkNamespaceManager != null) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        this.zkNamespaceManager.stop();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      }<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    } catch (IOException ioe) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      LOG.warn("Failed NamespaceManager close", ioe);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    }<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    try {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      if (this.nsTable != null) {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        this.nsTable.close();<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      }<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    } catch (IOException ioe) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      LOG.warn("Failed Namespace Table close", ioe);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    }<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    this.stopped = true;<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>
 
 
 


[38/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/io/HalfStoreFileReader.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/HalfStoreFileReader.html b/devapidocs/org/apache/hadoop/hbase/io/HalfStoreFileReader.html
index cb3f7f5..2fcd8c9 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/HalfStoreFileReader.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/HalfStoreFileReader.html
@@ -74,7 +74,7 @@ var activeTableTab = "activeTableTab";
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.regionserver.StoreFileReader">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>
@@ -134,6 +134,21 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileRe
 <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.regionserver.StoreFileReader">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFileReader.Listener</a></code></li>
+</ul>
+</li>
+</ul>
 <!-- =========== FIELD SUMMARY =========== -->
 <ul class="blockList">
 <li class="blockList"><a name="field.summary">
@@ -277,7 +292,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileRe
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#close-boolean-">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getBloomFilterType--">getBloomFilterType</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getComparator--">getComparator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getDeleteFamilyCnt--">getDeleteFamilyCnt</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getHFileMinorVersion--">getHFileMinorVersion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getHFileReader--">getHFileReader</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getHFileVersion--">getHFileVersion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getLastRowKey--">getLastRowKey</a>, <a href="../../.
 ./../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getMaxTimestamp--">getMaxTimestamp</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getScanner-boolean-boolean-">getScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getSequenceID--">getSequenceID</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getStoreFileScanner-boolean-boolean-boolean-long-long-boolean-">getStoreFileScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getTotalBloomSize--">getTotalBloomSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getTotalUncompressedBytes--">getTotalUncompressedBytes</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#indexSize--">indexSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#isBulkLoaded--"
 >isBulkLoaded</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#isPrimaryReplicaReader--">isPrimaryReplicaReader</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#length--">length</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#loadBloomfilter--">loadBloomfilter</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#loadBloomfilter-org.apache.hadoop.hbase.io.hfile.BlockType-">loadBloomfilter</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#loadFileInfo--">loadFileInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesDeleteFamilyBloomFilter-byte:A-int-int-">passesDeleteFamilyBloomFilter</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesGeneralRowBloomFilter-byte:A-int-int-">passesGeneralRowBloomFilter</a>, <a href="../
 ../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesGeneralRowColBloomFilter-org.apache.hadoop.hbase.Cell-">passesGeneralRowColBloomFilter</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setBulkLoaded-boolean-">setBulkLoaded</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setDeleteFamilyBloomFilterFaulty--">setDeleteFamilyBloomFilterFaulty</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setGeneralBloomFilterFaulty--">setGeneralBloomFilterFaulty</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setSequenceID-long-">setSequenceID</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#close-boolean-">close</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getBloomFilterType--">getBloomFilterType</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getComparator--">getComparator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getDeleteFamilyCnt--">getDeleteFamilyCnt</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getHFileMinorVersion--">getHFileMinorVersion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getHFileReader--">getHFileReader</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getHFileVersion--">getHFileVersion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getLastRowKey--">getLastRowKey</a>, <a href="../../.
 ./../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getMaxTimestamp--">getMaxTimestamp</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getScanner-boolean-boolean-">getScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getSequenceID--">getSequenceID</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getStoreFileScanner-boolean-boolean-boolean-long-long-boolean-">getStoreFileScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getTotalBloomSize--">getTotalBloomSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#getTotalUncompressedBytes--">getTotalUncompressedBytes</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#indexSize--">indexSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#isBulkLoaded--"
 >isBulkLoaded</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#isPrimaryReplicaReader--">isPrimaryReplicaReader</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#length--">length</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#loadBloomfilter--">loadBloomfilter</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#loadBloomfilter-org.apache.hadoop.hbase.io.hfile.BlockType-">loadBloomfilter</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#loadFileInfo--">loadFileInfo</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesDeleteFamilyBloomFilter-byte:A-int-int-">passesDeleteFamilyBloomFilter</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesGeneralRowBloomFilter-byte:A-int-int-">passesGeneralRowBloomFilter</a>, <a href="../
 ../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#passesGeneralRowColBloomFilter-org.apache.hadoop.hbase.Cell-">passesGeneralRowColBloomFilter</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setBulkLoaded-boolean-">setBulkLoaded</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setDeleteFamilyBloomFilterFaulty--">setDeleteFamilyBloomFilterFaulty</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setGeneralBloomFilterFaulty--">setGeneralBloomFilterFaulty</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setListener-org.apache.hadoop.hbase.regionserver.StoreFileReader.Listener-">setListener</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html#setSequenceID-long-">setSequenceID</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
@@ -606,7 +621,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileRe
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.regionserver.StoreFileReader">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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/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 c6b5daf..a6e5222 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -277,9 +277,9 @@
 <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/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.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/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/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/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/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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/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 7557e4f..427b9f5 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
@@ -353,9 +353,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.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>
 <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/BufferCallBeforeInitHandler.BufferCallAction.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">BufferCallBeforeInitHandler.BufferCallAction</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/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 bc33c0a..730b7cf 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -293,9 +293,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.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/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/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>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html b/devapidocs/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
index 2f343a8..9aba51a 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.257">HMaster.InitializationMonitor</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.260">HMaster.InitializationMonitor</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" title="class in org.apache.hadoop.hbase.util">HasThread</a></pre>
 <div class="block">Protection against zombie master. Started once Master accepts active responsibility and
  starts taking over responsibilities. Allows a finite time window before giving up ownership.</div>
@@ -250,7 +250,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>TIMEOUT_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/master/HMaster.InitializationMonitor.html#line.259">TIMEOUT_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/master/HMaster.InitializationMonitor.html#line.262">TIMEOUT_KEY</a></pre>
 <div class="block">The amount of time in milliseconds to sleep before checking initialization status.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -264,7 +264,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>TIMEOUT_DEFAULT</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.260">TIMEOUT_DEFAULT</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.263">TIMEOUT_DEFAULT</a></pre>
 </li>
 </ul>
 <a name="HALT_KEY">
@@ -273,7 +273,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>HALT_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/master/HMaster.InitializationMonitor.html#line.266">HALT_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/master/HMaster.InitializationMonitor.html#line.269">HALT_KEY</a></pre>
 <div class="block">When timeout expired and initialization has not complete, call <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/System.html?is-external=true#exit-int-" title="class or interface in java.lang"><code>System.exit(int)</code></a> when
  true, do nothing otherwise.</div>
 <dl>
@@ -288,7 +288,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>HALT_DEFAULT</h4>
-<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.267">HALT_DEFAULT</a></pre>
+<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.270">HALT_DEFAULT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.HMaster.InitializationMonitor.HALT_DEFAULT">Constant Field Values</a></dd>
@@ -301,7 +301,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>master</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.269">master</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.272">master</a></pre>
 </li>
 </ul>
 <a name="timeout">
@@ -310,7 +310,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>timeout</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.270">timeout</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.273">timeout</a></pre>
 </li>
 </ul>
 <a name="haltOnTimeout">
@@ -319,7 +319,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>haltOnTimeout</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.271">haltOnTimeout</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.274">haltOnTimeout</a></pre>
 </li>
 </ul>
 </li>
@@ -336,7 +336,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>InitializationMonitor</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.274">InitializationMonitor</a>(<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.277">InitializationMonitor</a>(<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)</pre>
 <div class="block">Creates a Thread that monitors the <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInitialized--"><code>HMaster.isInitialized()</code></a> state.</div>
 </li>
 </ul>
@@ -354,7 +354,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.283">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.286">run</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html b/devapidocs/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
index 8a92624..ccdf27e 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
@@ -136,7 +136,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.2922">HMaster.MasterStoppedException</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.3008">HMaster.MasterStoppedException</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/DoNotRetryIOException.html" title="class in org.apache.hadoop.hbase">DoNotRetryIOException</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -205,7 +205,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/DoNotRetryIOException.ht
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MasterStoppedException</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html#line.2923">MasterStoppedException</a>()</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html#line.3009">MasterStoppedException</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html b/devapidocs/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
index 11aebb1..19f6dea 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.440">HMaster.RedirectServlet</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.443">HMaster.RedirectServlet</a>
 extends javax.servlet.http.HttpServlet</pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -243,7 +243,7 @@ extends javax.servlet.http.HttpServlet</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>serialVersionUID</h4>
-<pre>private static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.441">serialVersionUID</a></pre>
+<pre>private static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.444">serialVersionUID</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.HMaster.RedirectServlet.serialVersionUID">Constant Field Values</a></dd>
@@ -256,7 +256,7 @@ extends javax.servlet.http.HttpServlet</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>regionServerInfoPort</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.442">regionServerInfoPort</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.445">regionServerInfoPort</a></pre>
 </li>
 </ul>
 <a name="regionServerHostname">
@@ -265,7 +265,7 @@ extends javax.servlet.http.HttpServlet</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>regionServerHostname</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/master/HMaster.RedirectServlet.html#line.443">regionServerHostname</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/master/HMaster.RedirectServlet.html#line.446">regionServerHostname</a></pre>
 </li>
 </ul>
 </li>
@@ -282,7 +282,7 @@ extends javax.servlet.http.HttpServlet</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RedirectServlet</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.449">RedirectServlet</a>(<a href="../../../../../org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http">InfoServer</a>&nbsp;infoServer,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.452">RedirectServlet</a>(<a href="../../../../../org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http">InfoServer</a>&nbsp;infoServer,
                        <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;hostname)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -305,7 +305,7 @@ extends javax.servlet.http.HttpServlet</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>doGet</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.455">doGet</a>(javax.servlet.http.HttpServletRequest&nbsp;request,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.458">doGet</a>(javax.servlet.http.HttpServletRequest&nbsp;request,
                   javax.servlet.http.HttpServletResponse&nbsp;response)
            throws javax.servlet.ServletException,
                   <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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html b/devapidocs/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
index 6b6e5c6..c3dbbed 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
@@ -105,7 +105,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>protected static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.2342">HMaster.TableDescriptorGetter</a></pre>
+<pre>protected static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.2428">HMaster.TableDescriptorGetter</a></pre>
 <div class="block">Implement to return TableDescriptor after pre-checks</div>
 </li>
 </ul>
@@ -150,7 +150,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockListLast">
 <li class="blockList">
 <h4>get</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html#line.2343">get</a>()
+<pre><a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html#line.2429">get</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></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>


[34/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/master/MasterWalManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/MasterWalManager.html b/devapidocs/org/apache/hadoop/hbase/master/MasterWalManager.html
index 2348fa8..ea3def5 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/MasterWalManager.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/MasterWalManager.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":42,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10};
+var methods = {"i0":10,"i1":42,"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};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -241,7 +241,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i3" class="rowColor">
 <td class="colFirst"><code><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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#getLiveServersFromWALDir--">getLiveServersFromWALDir</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#getLiveServersFromWALDir--">getLiveServersFromWALDir</a></span>()</code>
+<div class="block">Get Servernames that COULD BE 'alive'; excludes those that have a '-splitting' suffix as these
+ are already being split -- they cannot be 'alive'.</div>
+</td>
 </tr>
 <tr id="i4" class="altColor">
 <td class="colFirst"><code>private <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;org.apache.hadoop.fs.Path&gt;</code></td>
@@ -254,37 +257,51 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </td>
 </tr>
 <tr id="i6" class="altColor">
+<td class="colFirst"><code><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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#getServerNamesFromWALDirPath-org.apache.hadoop.fs.PathFilter-">getServerNamesFromWALDirPath</a></span>(org.apache.hadoop.fs.PathFilter&nbsp;filter)</code>&nbsp;</td>
+</tr>
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.html" title="class in org.apache.hadoop.hbase.master">SplitLogManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#getSplitLogManager--">getSplitLogManager</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
+<td class="colFirst"><code><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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#getSplittingServersFromWALDir--">getSplittingServersFromWALDir</a></span>()</code>
+<div class="block">Get Servernames which are currently splitting; paths have a '-splitting' suffix.</div>
+</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>org.apache.hadoop.fs.FileStatus[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#getWALDirPaths-org.apache.hadoop.fs.PathFilter-">getWALDirPaths</a></span>(org.apache.hadoop.fs.PathFilter&nbsp;filter)</code>&nbsp;</td>
+</tr>
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#splitLog-org.apache.hadoop.hbase.ServerName-">splitLog</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</code>&nbsp;</td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#splitLog-java.util.Set-">splitLog</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;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;serverNames)</code>&nbsp;</td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#splitLog-java.util.Set-org.apache.hadoop.fs.PathFilter-">splitLog</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;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;serverNames,
         org.apache.hadoop.fs.PathFilter&nbsp;filter)</code>
 <div class="block">This method is the base split method that splits WAL files matching a filter.</div>
 </td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#splitMetaLog-org.apache.hadoop.hbase.ServerName-">splitMetaLog</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">Specialized method to handle the splitting for meta WAL</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#splitMetaLog-java.util.Set-">splitMetaLog</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;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;serverNames)</code>
 <div class="block">Specialized method to handle the splitting for meta WAL</div>
 </td>
 </tr>
-<tr id="i12" class="altColor">
+<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/master/MasterWalManager.html#stop--">stop</a></span>()</code>&nbsp;</td>
 </tr>
@@ -521,19 +538,68 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="getSplittingServersFromWALDir--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getSplittingServersFromWALDir</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="../../../../../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/master/MasterWalManager.html#line.151">getSplittingServersFromWALDir</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></pre>
+<div class="block">Get Servernames which are currently splitting; paths have a '-splitting' suffix.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>ServerName</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> - IOException</dd>
+</dl>
+</li>
+</ul>
 <a name="getLiveServersFromWALDir--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getLiveServersFromWALDir</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="../../../../../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/master/MasterWalManager.html#line.151">getLiveServersFromWALDir</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="../../../../../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/master/MasterWalManager.html#line.162">getLiveServersFromWALDir</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></pre>
+<div class="block">Get Servernames that COULD BE 'alive'; excludes those that have a '-splitting' suffix as these
+ are already being split -- they cannot be 'alive'.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>ServerName</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> - IOException</dd>
+</dl>
+</li>
+</ul>
+<a name="getServerNamesFromWALDirPath-org.apache.hadoop.fs.PathFilter-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getServerNamesFromWALDirPath</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="../../../../../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/master/MasterWalManager.html#line.171">getServerNamesFromWALDirPath</a>(org.apache.hadoop.fs.PathFilter&nbsp;filter)
+                                             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="returnLabel">Returns:</span></dt>
+<dd>listing of ServerNames found by parsing WAL directory paths in FS.</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>
+</dl>
+</li>
+</ul>
+<a name="getWALDirPaths-org.apache.hadoop.fs.PathFilter-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getWALDirPaths</h4>
+<pre>public&nbsp;org.apache.hadoop.fs.FileStatus[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.188">getWALDirPaths</a>(org.apache.hadoop.fs.PathFilter&nbsp;filter)
+                                                 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="returnLabel">Returns:</span></dt>
-<dd>listing of ServerNames found in the filesystem under the WAL directory
-   that COULD BE 'alive'; excludes those that have a '-splitting' suffix as these are already
-   being split -- they cannot be 'alive'.</dd>
+<dd>List of all RegionServer WAL dirs; i.e. this.rootDir/HConstants.HREGION_LOGDIR_NAME.</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>
 </dl>
@@ -546,7 +612,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <li class="blockList">
 <h4>getFailedServersFromLogFolders</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&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="../../../../../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/master/MasterWalManager.html#line.179">getFailedServersFromLogFolders</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="../../../../../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/master/MasterWalManager.html#line.203">getFailedServersFromLogFolders</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">With proc-v2, we can record the crash server with procedure store, so do not need
              to scan the wal directory to find out the splitting wal directory any more. Leave
              it here only because <code>RecoverMetaProcedure</code>(which is also deprecated) uses
@@ -564,7 +630,7 @@ public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>splitLog</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.245">splitLog</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/master/MasterWalManager.html#line.269">splitLog</a>(<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>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -578,7 +644,7 @@ public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>splitMetaLog</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.253">splitMetaLog</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/master/MasterWalManager.html#line.277">splitMetaLog</a>(<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>
 <div class="block">Specialized method to handle the splitting for meta WAL</div>
 <dl>
@@ -595,7 +661,7 @@ public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>splitMetaLog</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.261">splitMetaLog</a>(<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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;serverNames)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.285">splitMetaLog</a>(<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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;serverNames)
                   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">Specialized method to handle the splitting for meta WAL</div>
 <dl>
@@ -612,7 +678,7 @@ public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>getLogDirs</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;org.apache.hadoop.fs.Path&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.268">getLogDirs</a>(<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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;serverNames)
+<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;org.apache.hadoop.fs.Path&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.292">getLogDirs</a>(<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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;serverNames)
                                             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>
@@ -626,7 +692,7 @@ public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>splitLog</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.308">splitLog</a>(<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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;serverNames)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.332">splitLog</a>(<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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;serverNames)
               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>
@@ -640,7 +706,7 @@ public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.htm
 <ul class="blockListLast">
 <li class="blockList">
 <h4>splitLog</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.318">splitLog</a>(<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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;serverNames,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/MasterWalManager.html#line.342">splitLog</a>(<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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;serverNames,
                      org.apache.hadoop.fs.PathFilter&nbsp;filter)
               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">This method is the base split method that splits WAL files matching a filter. Callers should

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/master/RegionServerTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/RegionServerTracker.html b/devapidocs/org/apache/hadoop/hbase/master/RegionServerTracker.html
index ea701c9..0b9b094 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/RegionServerTracker.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/RegionServerTracker.html
@@ -221,8 +221,9 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
 </tr>
 <tr id="i3" class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html#start-java.util.Set-java.util.Set-">start</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;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;deadServersFromPE,
-     <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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;liveServersFromWALDir)</code>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html#start-java.util.Set-java.util.Set-java.util.Set-">start</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;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;deadServersFromPE,
+     <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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;liveServersFromWALDir,
+     <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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;splittingServersFromWALDir)</code>
 <div class="block">Starts the tracking of online RegionServers.</div>
 </td>
 </tr>
@@ -347,14 +348,15 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
 </dl>
 </li>
 </ul>
-<a name="start-java.util.Set-java.util.Set-">
+<a name="start-java.util.Set-java.util.Set-java.util.Set-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>start</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.119">start</a>(<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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;deadServersFromPE,
-                  <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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;liveServersFromWALDir)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.120">start</a>(<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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;deadServersFromPE,
+                  <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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;liveServersFromWALDir,
+                  <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="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;splittingServersFromWALDir)
            throws org.apache.zookeeper.KeeperException,
                   <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">Starts the tracking of online RegionServers. All RSes will be tracked after this method is
@@ -369,6 +371,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>deadServersFromPE</code> - the region servers which already have SCP associated.</dd>
 <dd><code>liveServersFromWALDir</code> - the live region servers from wal directory.</dd>
+<dd><code>splittingServersFromWALDir</code> - Servers whose WALs are being actively 'split'.</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code>org.apache.zookeeper.KeeperException</code></dd>
 <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>
@@ -381,7 +384,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>stop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.141">stop</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.149">stop</a>()</pre>
 </li>
 </ul>
 <a name="refresh--">
@@ -390,7 +393,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
 <ul class="blockList">
 <li class="blockList">
 <h4>refresh</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.145">refresh</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.153">refresh</a>()</pre>
 </li>
 </ul>
 <a name="nodeChildrenChanged-java.lang.String-">
@@ -399,7 +402,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.htm
 <ul class="blockListLast">
 <li class="blockList">
 <h4>nodeChildrenChanged</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.182">nodeChildrenChanged</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;path)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/RegionServerTracker.html#line.190">nodeChildrenChanged</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;path)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#nodeChildrenChanged-java.lang.String-">ZKListener</a></code></span></div>
 <div class="block">Called when an existing node has a child node added or removed.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
index df7fcf7..2c79bef 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html
@@ -1155,7 +1155,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>STATES_EXPECTED_ON_OPEN</h4>
-<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1393">STATES_EXPECTED_ON_OPEN</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1394">STATES_EXPECTED_ON_OPEN</a></pre>
 </li>
 </ul>
 <a name="STATES_EXPECTED_ON_CLOSING">
@@ -1164,7 +1164,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>STATES_EXPECTED_ON_CLOSING</h4>
-<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1398">STATES_EXPECTED_ON_CLOSING</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1399">STATES_EXPECTED_ON_CLOSING</a></pre>
 </li>
 </ul>
 <a name="STATES_EXPECTED_ON_CLOSED">
@@ -1173,7 +1173,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>STATES_EXPECTED_ON_CLOSED</h4>
-<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1405">STATES_EXPECTED_ON_CLOSED</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1406">STATES_EXPECTED_ON_CLOSED</a></pre>
 </li>
 </ul>
 <a name="STATES_EXPECTED_ON_ASSIGN">
@@ -1182,7 +1182,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>STATES_EXPECTED_ON_ASSIGN</h4>
-<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1412">STATES_EXPECTED_ON_ASSIGN</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1413">STATES_EXPECTED_ON_ASSIGN</a></pre>
 </li>
 </ul>
 <a name="STATES_EXPECTED_ON_UNASSIGN_OR_MOVE">
@@ -1191,7 +1191,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>STATES_EXPECTED_ON_UNASSIGN_OR_MOVE</h4>
-<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1415">STATES_EXPECTED_ON_UNASSIGN_OR_MOVE</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1416">STATES_EXPECTED_ON_UNASSIGN_OR_MOVE</a></pre>
 </li>
 </ul>
 <a name="pendingAssignQueue">
@@ -1200,7 +1200,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>pendingAssignQueue</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1590">pendingAssignQueue</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1591">pendingAssignQueue</a></pre>
 </li>
 </ul>
 <a name="assignQueueLock">
@@ -1209,7 +1209,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>assignQueueLock</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantLock</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1591">assignQueueLock</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantLock</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1592">assignQueueLock</a></pre>
 </li>
 </ul>
 <a name="assignQueueFullCond">
@@ -1218,7 +1218,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockListLast">
 <li class="blockList">
 <h4>assignQueueFullCond</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Condition.html?is-external=true" title="class or interface in java.util.concurrent.locks">Condition</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1592">assignQueueFullCond</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Condition.html?is-external=true" title="class or interface in java.util.concurrent.locks">Condition</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1593">assignQueueFullCond</a></pre>
 </li>
 </ul>
 </li>
@@ -2037,7 +2037,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>processOfflineRegions</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1240">processOfflineRegions</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1241">processOfflineRegions</a>()</pre>
 </li>
 </ul>
 <a name="loadMeta--">
@@ -2046,7 +2046,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>loadMeta</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1250">loadMeta</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1251">loadMeta</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></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2060,7 +2060,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>checkMetaLoaded</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1301">checkMetaLoaded</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1302">checkMetaLoaded</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri)
                       throws <a href="../../../../../../org/apache/hadoop/hbase/PleaseHoldException.html" title="class in org.apache.hadoop.hbase">PleaseHoldException</a></pre>
 <div class="block">Used to check if the meta loading is done.
  <p/>
@@ -2079,7 +2079,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumRegionsOpened</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1316">getNumRegionsOpened</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1317">getNumRegionsOpened</a>()</pre>
 </li>
 </ul>
 <a name="submitServerCrash-org.apache.hadoop.hbase.ServerName-boolean-">
@@ -2088,7 +2088,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>submitServerCrash</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1321">submitServerCrash</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/master/assignment/AssignmentManager.html#line.1322">submitServerCrash</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                               boolean&nbsp;shouldSplitWal)</pre>
 </li>
 </ul>
@@ -2098,7 +2098,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>offlineRegion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1330">offlineRegion</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&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1331">offlineRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo)</pre>
 </li>
 </ul>
 <a name="onlineRegion-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">
@@ -2107,7 +2107,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>onlineRegion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1338">onlineRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1339">onlineRegion</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
                          <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 </li>
 </ul>
@@ -2117,7 +2117,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>getSnapShotOfAssignment</h4>
-<pre>public&nbsp;<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/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</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/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1342">getSnapShotOfAssignment</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">R
 egionInfo</a>&gt;&nbsp;regions)</pre>
+<pre>public&nbsp;<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/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</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/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1343">getSnapShotOfAssignment</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">R
 egionInfo</a>&gt;&nbsp;regions)</pre>
 </li>
 </ul>
 <a name="getReopenStatus-org.apache.hadoop.hbase.TableName-">
@@ -2126,7 +2126,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>getReopenStatus</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/Integer.html?is-external=true" title="class or interface in java.lang">Integer</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/master/assignment/AssignmentManager.html#line.1357">getReopenStatus</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<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/Integer.html?is-external=true" title="class or interface in java.lang">Integer</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/master/assignment/AssignmentManager.html#line.1358">getReopenStatus</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 <div class="block">Used by the client (via master) to identify if all regions have the schema updates</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2144,7 +2144,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>hasRegionsInTransition</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1371">hasRegionsInTransition</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1372">hasRegionsInTransition</a>()</pre>
 </li>
 </ul>
 <a name="getRegionsInTransition--">
@@ -2153,7 +2153,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionsInTransition</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/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1375">getRegionsInTransition</a>()</pre>
+<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/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1376">getRegionsInTransition</a>()</pre>
 </li>
 </ul>
 <a name="getAssignedRegions--">
@@ -2162,7 +2162,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>getAssignedRegions</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/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1379">getAssignedRegions</a>()</pre>
+<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/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1380">getAssignedRegions</a>()</pre>
 </li>
 </ul>
 <a name="getRegionInfo-byte:A-">
@@ -2171,7 +2171,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionInfo</h4>
-<pre>public&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/master/assignment/AssignmentManager.html#line.1383">getRegionInfo</a>(byte[]&nbsp;regionName)</pre>
+<pre>public&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/master/assignment/AssignmentManager.html#line.1384">getRegionInfo</a>(byte[]&nbsp;regionName)</pre>
 </li>
 </ul>
 <a name="transitStateAndUpdate-org.apache.hadoop.hbase.master.assignment.RegionStateNode-org.apache.hadoop.hbase.master.RegionState.State-org.apache.hadoop.hbase.master.RegionState.State...-">
@@ -2180,7 +2180,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>transitStateAndUpdate</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1421">transitStateAndUpdate</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&nbsp;regionNode,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1422">transitStateAndUpdate</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&nbsp;regionNode,
                                    <a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>&nbsp;newState,
                                    <a href="../../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>...&nbsp;expectedStates)
                             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>
@@ -2196,7 +2196,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>regionOpening</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1438">regionOpening</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&nbsp;regionNode)
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1439">regionOpening</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&nbsp;regionNode)
             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>
@@ -2210,7 +2210,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>regionFailedOpen</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1451">regionFailedOpen</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&nbsp;regionNode,
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1452">regionFailedOpen</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&nbsp;regionNode,
                       boolean&nbsp;giveUp)
                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>
@@ -2225,7 +2225,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>regionOpened</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1475">regionOpened</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&nbsp;regionNode)
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1476">regionOpened</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&nbsp;regionNode)
            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>
@@ -2239,7 +2239,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>regionClosing</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1492">regionClosing</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&nbsp;regionNode)
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1493">regionClosing</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&nbsp;regionNode)
             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>
@@ -2253,7 +2253,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>regionClosed</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1508">regionClosed</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&nbsp;regionNode,
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1509">regionClosed</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&nbsp;regionNode,
                   boolean&nbsp;normally)
            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>
@@ -2268,7 +2268,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>markRegionAsSplit</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1535">markRegionAsSplit</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;parent,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1536">markRegionAsSplit</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;parent,
                               <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                               <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;daughterA,
                               <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;daughterB)
@@ -2285,7 +2285,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>markRegionAsMerged</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1565">markRegionAsMerged</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;child,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1566">markRegionAsMerged</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;child,
                                <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                                <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;mother,
                                <a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;father)
@@ -2308,7 +2308,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldAssignFavoredNodes</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1582">shouldAssignFavoredNodes</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;region)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1583">shouldAssignFavoredNodes</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;region)</pre>
 </li>
 </ul>
 <a name="queueAssign-org.apache.hadoop.hbase.master.assignment.RegionStateNode-">
@@ -2317,7 +2317,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>queueAssign</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1599">queueAssign</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&nbsp;regionNode)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1600">queueAssign</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&nbsp;regionNode)</pre>
 <div class="block">Add the assign operation to the assignment queue.
  The pending assignment operation will be processed,
  and each region will be assigned by a server using the balancer.</div>
@@ -2329,7 +2329,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>startAssignmentThread</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1616">startAssignmentThread</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1617">startAssignmentThread</a>()</pre>
 </li>
 </ul>
 <a name="stopAssignmentThread--">
@@ -2338,7 +2338,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>stopAssignmentThread</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1634">stopAssignmentThread</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1635">stopAssignmentThread</a>()</pre>
 </li>
 </ul>
 <a name="assignQueueSignal--">
@@ -2347,7 +2347,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>assignQueueSignal</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1647">assignQueueSignal</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1648">assignQueueSignal</a>()</pre>
 </li>
 </ul>
 <a name="waitOnAssignQueue--">
@@ -2356,7 +2356,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>waitOnAssignQueue</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</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/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1657">waitOnAssignQueue</a>()</pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</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/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1658">waitOnAssignQueue</a>()</pre>
 </li>
 </ul>
 <a name="processAssignQueue--">
@@ -2365,7 +2365,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>processAssignQueue</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1682">processAssignQueue</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1683">processAssignQueue</a>()</pre>
 </li>
 </ul>
 <a name="processAssignmentPlans-java.util.HashMap-java.util.HashMap-java.util.List-java.util.List-">
@@ -2374,7 +2374,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>processAssignmentPlans</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1744">processAssignmentPlans</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</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/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&gt;&nbsp;regions,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1745">processAssignmentPlans</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</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/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&gt;&nbsp;regions,
                                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</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;retainMap,
                                     <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;hris,
                                     <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;servers)</pre>
@@ -2386,7 +2386,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>acceptPlan</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1782">acceptPlan</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</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/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&gt;&nbsp;regions,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1783">acceptPlan</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</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/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&gt;&nbsp;regions,
                         <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/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</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/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&gt;&nbsp;plan)
                  throws <a href="../../../../../../org/apache/hadoop/hbase/HBaseIOException.html" title="class in org.apache.hadoop.hbase">HBaseIOException</a></pre>
 <dl>
@@ -2401,7 +2401,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>addToPendingAssignment</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1811">addToPendingAssignment</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</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/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&gt;&nbsp;regions,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1812">addToPendingAssignment</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</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/master/assignment/RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStateNode</a>&gt;&nbsp;regions,
                                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;pendingRegions)</pre>
 </li>
 </ul>
@@ -2411,7 +2411,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>getExcludedServersForSystemTable</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/master/assignment/AssignmentManager.html#line.1827">getExcludedServersForSystemTable</a>()</pre>
+<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/master/assignment/AssignmentManager.html#line.1828">getExcludedServersForSystemTable</a>()</pre>
 <div class="block">Get a list of servers that this region cannot be assigned to.
  For system tables, we must assign them to a server with highest version.</div>
 </li>
@@ -2422,7 +2422,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>serverAdded</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1850">serverAdded</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1851">serverAdded</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/ServerListener.html#serverAdded-org.apache.hadoop.hbase.ServerName-">ServerListener</a></code></span></div>
 <div class="block">The server has joined the cluster.</div>
 <dl>
@@ -2439,7 +2439,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>serverRemoved</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1854">serverRemoved</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1855">serverRemoved</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/ServerListener.html#serverRemoved-org.apache.hadoop.hbase.ServerName-">ServerListener</a></code></span></div>
 <div class="block">The server was removed from the cluster.</div>
 <dl>
@@ -2456,7 +2456,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockList">
 <li class="blockList">
 <h4>killRegionServer</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1862">killRegionServer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/ServerStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">ServerStateNode</a>&nbsp;serverNode)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1863">killRegionServer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/ServerStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">ServerStateNode</a>&nbsp;serverNode)</pre>
 </li>
 </ul>
 <a name="getMaster--">
@@ -2465,7 +2465,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/master/ServerListe
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getMaster</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1867">getMaster</a>()</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#line.1868">getMaster</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
index 3e0bffb..92d2987 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -348,10 +348,10 @@
 <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.<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MetricsMasterSourceFactoryImpl.FactoryStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MasterRpcServices.BalanceSwitchMode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.TerminationStatus.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.TerminationStatus</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MasterRpcServices.BalanceSwitchMode</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
index 98b41d1..ddea7b8 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -216,10 +216,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.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">MetaProcedureInterface.MetaOperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">PeerProcedureInterface.PeerOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.ServerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ServerProcedureInterface.ServerOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TableProcedureInterface.TableOperationType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">PeerProcedureInterface.PeerOperationType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">MetaProcedureInterface.MetaOperationType</span></a></li>
 </ul>
 </li>
 </ul>


[14/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
index 34b8b52..3f9d8d2 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
@@ -935,7 +935,7 @@
 <span class="sourceLineNo">927</span>          storeEngine.getStoreFileManager().clearCompactedFiles();<a name="line.927"></a>
 <span class="sourceLineNo">928</span>      // clear the compacted files<a name="line.928"></a>
 <span class="sourceLineNo">929</span>      if (CollectionUtils.isNotEmpty(compactedfiles)) {<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        removeCompactedfiles(compactedfiles);<a name="line.930"></a>
+<span class="sourceLineNo">930</span>        removeCompactedfiles(compactedfiles, true);<a name="line.930"></a>
 <span class="sourceLineNo">931</span>      }<a name="line.931"></a>
 <span class="sourceLineNo">932</span>      if (!result.isEmpty()) {<a name="line.932"></a>
 <span class="sourceLineNo">933</span>        // initialize the thread pool for closing store files in parallel.<a name="line.933"></a>
@@ -2583,190 +2583,221 @@
 <span class="sourceLineNo">2575</span>   * Closes and archives the compacted files under this store<a name="line.2575"></a>
 <span class="sourceLineNo">2576</span>   */<a name="line.2576"></a>
 <span class="sourceLineNo">2577</span>  public synchronized void closeAndArchiveCompactedFiles() throws IOException {<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>    // ensure other threads do not attempt to archive the same files on close()<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>    archiveLock.lock();<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    try {<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>      lock.readLock().lock();<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>      Collection&lt;HStoreFile&gt; copyCompactedfiles = null;<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>      try {<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>        Collection&lt;HStoreFile&gt; compactedfiles =<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span>            this.getStoreEngine().getStoreFileManager().getCompactedfiles();<a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>        if (CollectionUtils.isNotEmpty(compactedfiles)) {<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>          // Do a copy under read lock<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>          copyCompactedfiles = new ArrayList&lt;&gt;(compactedfiles);<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span>        } else {<a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>          LOG.trace("No compacted files to archive");<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>        }<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>      } finally {<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>        lock.readLock().unlock();<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>      }<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>      if (CollectionUtils.isNotEmpty(copyCompactedfiles)) {<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>        removeCompactedfiles(copyCompactedfiles);<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>      }<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>    } finally {<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>      archiveLock.unlock();<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>    }<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span>  }<a name="line.2601"></a>
-<span class="sourceLineNo">2602</span><a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>  /**<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>   * Archives and removes the compacted files<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span>   * @param compactedfiles The compacted files in this store that are not active in reads<a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>   */<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>  private void removeCompactedfiles(Collection&lt;HStoreFile&gt; compactedfiles)<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>      throws IOException {<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>    final List&lt;HStoreFile&gt; filesToRemove = new ArrayList&lt;&gt;(compactedfiles.size());<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>    final List&lt;Long&gt; storeFileSizes = new ArrayList&lt;&gt;(compactedfiles.size());<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>    for (final HStoreFile file : compactedfiles) {<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>      synchronized (file) {<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>        try {<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>          StoreFileReader r = file.getReader();<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>          if (r == null) {<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>            LOG.debug("The file {} was closed but still not archived", file);<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>            // HACK: Temporarily re-open the reader so we can get the size of the file. Ideally,<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>            // we should know the size of an HStoreFile without having to ask the HStoreFileReader<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>            // for that.<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>            long length = getStoreFileSize(file);<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>            filesToRemove.add(file);<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>            storeFileSizes.add(length);<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>            continue;<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>          }<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>          if (file.isCompactedAway() &amp;&amp; !file.isReferencedInReads()) {<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span>            // Even if deleting fails we need not bother as any new scanners won't be<a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>            // able to use the compacted file as the status is already compactedAway<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>            LOG.trace("Closing and archiving the file {}", file);<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span>            // Copy the file size before closing the reader<a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>            final long length = r.length();<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>            r.close(true);<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>            // Just close and return<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>            filesToRemove.add(file);<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>            // Only add the length if we successfully added the file to `filesToRemove`<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>            storeFileSizes.add(length);<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>          } else {<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>            LOG.info("Can't archive compacted file " + file.getPath()<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>                + " because of either isCompactedAway = " + file.isCompactedAway()<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>                + " or file has reference, isReferencedInReads = " + file.isReferencedInReads()<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>                + ", skipping for now.");<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>          }<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>        } catch (Exception e) {<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>          LOG.error("Exception while trying to close the compacted store file {}",<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>            file.getPath(), e);<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>        }<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>      }<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>    }<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>    if (this.isPrimaryReplicaStore()) {<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>      // Only the primary region is allowed to move the file to archive.<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>      // The secondary region does not move the files to archive. Any active reads from<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>      // the secondary region will still work because the file as such has active readers on it.<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span>      if (!filesToRemove.isEmpty()) {<a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>        LOG.debug("Moving the files {} to archive", filesToRemove);<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>        // Only if this is successful it has to be removed<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span>        try {<a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>          this.fs.removeStoreFiles(this.getColumnFamilyDescriptor().getNameAsString(), filesToRemove);<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>        } catch (FailedArchiveException fae) {<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>          // Even if archiving some files failed, we still need to clear out any of the<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>          // files which were successfully archived.  Otherwise we will receive a<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span>          // FileNotFoundException when we attempt to re-archive them in the next go around.<a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>          Collection&lt;Path&gt; failedFiles = fae.getFailedFiles();<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>          Iterator&lt;HStoreFile&gt; iter = filesToRemove.iterator();<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>          Iterator&lt;Long&gt; sizeIter = storeFileSizes.iterator();<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>          while (iter.hasNext()) {<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>            sizeIter.next();<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span>            if (failedFiles.contains(iter.next().getPath())) {<a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>              iter.remove();<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>              sizeIter.remove();<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>            }<a name="line.2669"></a>
+<span class="sourceLineNo">2578</span>    closeAndArchiveCompactedFiles(false);<a name="line.2578"></a>
+<span class="sourceLineNo">2579</span>  }<a name="line.2579"></a>
+<span class="sourceLineNo">2580</span><a name="line.2580"></a>
+<span class="sourceLineNo">2581</span>  @VisibleForTesting<a name="line.2581"></a>
+<span class="sourceLineNo">2582</span>  public synchronized void closeAndArchiveCompactedFiles(boolean storeClosing) throws IOException {<a name="line.2582"></a>
+<span class="sourceLineNo">2583</span>    // ensure other threads do not attempt to archive the same files on close()<a name="line.2583"></a>
+<span class="sourceLineNo">2584</span>    archiveLock.lock();<a name="line.2584"></a>
+<span class="sourceLineNo">2585</span>    try {<a name="line.2585"></a>
+<span class="sourceLineNo">2586</span>      lock.readLock().lock();<a name="line.2586"></a>
+<span class="sourceLineNo">2587</span>      Collection&lt;HStoreFile&gt; copyCompactedfiles = null;<a name="line.2587"></a>
+<span class="sourceLineNo">2588</span>      try {<a name="line.2588"></a>
+<span class="sourceLineNo">2589</span>        Collection&lt;HStoreFile&gt; compactedfiles =<a name="line.2589"></a>
+<span class="sourceLineNo">2590</span>            this.getStoreEngine().getStoreFileManager().getCompactedfiles();<a name="line.2590"></a>
+<span class="sourceLineNo">2591</span>        if (CollectionUtils.isNotEmpty(compactedfiles)) {<a name="line.2591"></a>
+<span class="sourceLineNo">2592</span>          // Do a copy under read lock<a name="line.2592"></a>
+<span class="sourceLineNo">2593</span>          copyCompactedfiles = new ArrayList&lt;&gt;(compactedfiles);<a name="line.2593"></a>
+<span class="sourceLineNo">2594</span>        } else {<a name="line.2594"></a>
+<span class="sourceLineNo">2595</span>          LOG.trace("No compacted files to archive");<a name="line.2595"></a>
+<span class="sourceLineNo">2596</span>        }<a name="line.2596"></a>
+<span class="sourceLineNo">2597</span>      } finally {<a name="line.2597"></a>
+<span class="sourceLineNo">2598</span>        lock.readLock().unlock();<a name="line.2598"></a>
+<span class="sourceLineNo">2599</span>      }<a name="line.2599"></a>
+<span class="sourceLineNo">2600</span>      if (CollectionUtils.isNotEmpty(copyCompactedfiles)) {<a name="line.2600"></a>
+<span class="sourceLineNo">2601</span>        removeCompactedfiles(copyCompactedfiles, storeClosing);<a name="line.2601"></a>
+<span class="sourceLineNo">2602</span>      }<a name="line.2602"></a>
+<span class="sourceLineNo">2603</span>    } finally {<a name="line.2603"></a>
+<span class="sourceLineNo">2604</span>      archiveLock.unlock();<a name="line.2604"></a>
+<span class="sourceLineNo">2605</span>    }<a name="line.2605"></a>
+<span class="sourceLineNo">2606</span>  }<a name="line.2606"></a>
+<span class="sourceLineNo">2607</span><a name="line.2607"></a>
+<span class="sourceLineNo">2608</span>  /**<a name="line.2608"></a>
+<span class="sourceLineNo">2609</span>   * Archives and removes the compacted files<a name="line.2609"></a>
+<span class="sourceLineNo">2610</span>   * @param compactedfiles The compacted files in this store that are not active in reads<a name="line.2610"></a>
+<span class="sourceLineNo">2611</span>   */<a name="line.2611"></a>
+<span class="sourceLineNo">2612</span>  private void removeCompactedfiles(Collection&lt;HStoreFile&gt; compactedfiles, boolean storeClosing)<a name="line.2612"></a>
+<span class="sourceLineNo">2613</span>      throws IOException {<a name="line.2613"></a>
+<span class="sourceLineNo">2614</span>    final List&lt;HStoreFile&gt; filesToRemove = new ArrayList&lt;&gt;(compactedfiles.size());<a name="line.2614"></a>
+<span class="sourceLineNo">2615</span>    final List&lt;Long&gt; storeFileSizes = new ArrayList&lt;&gt;(compactedfiles.size());<a name="line.2615"></a>
+<span class="sourceLineNo">2616</span>    for (final HStoreFile file : compactedfiles) {<a name="line.2616"></a>
+<span class="sourceLineNo">2617</span>      synchronized (file) {<a name="line.2617"></a>
+<span class="sourceLineNo">2618</span>        try {<a name="line.2618"></a>
+<span class="sourceLineNo">2619</span>          StoreFileReader r = file.getReader();<a name="line.2619"></a>
+<span class="sourceLineNo">2620</span>          if (r == null) {<a name="line.2620"></a>
+<span class="sourceLineNo">2621</span>            LOG.debug("The file {} was closed but still not archived", file);<a name="line.2621"></a>
+<span class="sourceLineNo">2622</span>            // HACK: Temporarily re-open the reader so we can get the size of the file. Ideally,<a name="line.2622"></a>
+<span class="sourceLineNo">2623</span>            // we should know the size of an HStoreFile without having to ask the HStoreFileReader<a name="line.2623"></a>
+<span class="sourceLineNo">2624</span>            // for that.<a name="line.2624"></a>
+<span class="sourceLineNo">2625</span>            long length = getStoreFileSize(file);<a name="line.2625"></a>
+<span class="sourceLineNo">2626</span>            filesToRemove.add(file);<a name="line.2626"></a>
+<span class="sourceLineNo">2627</span>            storeFileSizes.add(length);<a name="line.2627"></a>
+<span class="sourceLineNo">2628</span>            continue;<a name="line.2628"></a>
+<span class="sourceLineNo">2629</span>          }<a name="line.2629"></a>
+<span class="sourceLineNo">2630</span><a name="line.2630"></a>
+<span class="sourceLineNo">2631</span>          //Compacted files in the list should always be marked compacted away. In the event<a name="line.2631"></a>
+<span class="sourceLineNo">2632</span>          //they're contradicting in order to guarantee data consistency<a name="line.2632"></a>
+<span class="sourceLineNo">2633</span>          //should we choose one and ignore the other?<a name="line.2633"></a>
+<span class="sourceLineNo">2634</span>          if (storeClosing &amp;&amp; !file.isCompactedAway()) {<a name="line.2634"></a>
+<span class="sourceLineNo">2635</span>            String msg =<a name="line.2635"></a>
+<span class="sourceLineNo">2636</span>                "Region closing but StoreFile is in compacted list but not compacted away: " +<a name="line.2636"></a>
+<span class="sourceLineNo">2637</span>                file.getPath().getName();<a name="line.2637"></a>
+<span class="sourceLineNo">2638</span>            throw new IllegalStateException(msg);<a name="line.2638"></a>
+<span class="sourceLineNo">2639</span>          }<a name="line.2639"></a>
+<span class="sourceLineNo">2640</span><a name="line.2640"></a>
+<span class="sourceLineNo">2641</span>          //If store is closing we're ignoring any references to keep things consistent<a name="line.2641"></a>
+<span class="sourceLineNo">2642</span>          //and remove compacted storefiles from the region directory<a name="line.2642"></a>
+<span class="sourceLineNo">2643</span>          if (file.isCompactedAway() &amp;&amp; (!file.isReferencedInReads() || storeClosing)) {<a name="line.2643"></a>
+<span class="sourceLineNo">2644</span>            if (storeClosing &amp;&amp; file.isReferencedInReads()) {<a name="line.2644"></a>
+<span class="sourceLineNo">2645</span>              LOG.debug("Region closing but StoreFile still has references: {}",<a name="line.2645"></a>
+<span class="sourceLineNo">2646</span>                  file.getPath().getName());<a name="line.2646"></a>
+<span class="sourceLineNo">2647</span>            }<a name="line.2647"></a>
+<span class="sourceLineNo">2648</span>            // Even if deleting fails we need not bother as any new scanners won't be<a name="line.2648"></a>
+<span class="sourceLineNo">2649</span>            // able to use the compacted file as the status is already compactedAway<a name="line.2649"></a>
+<span class="sourceLineNo">2650</span>            LOG.trace("Closing and archiving the file {}", file);<a name="line.2650"></a>
+<span class="sourceLineNo">2651</span>            // Copy the file size before closing the reader<a name="line.2651"></a>
+<span class="sourceLineNo">2652</span>            final long length = r.length();<a name="line.2652"></a>
+<span class="sourceLineNo">2653</span>            r.close(true);<a name="line.2653"></a>
+<span class="sourceLineNo">2654</span>            file.closeStreamReaders(true);<a name="line.2654"></a>
+<span class="sourceLineNo">2655</span>            // Just close and return<a name="line.2655"></a>
+<span class="sourceLineNo">2656</span>            filesToRemove.add(file);<a name="line.2656"></a>
+<span class="sourceLineNo">2657</span>            // Only add the length if we successfully added the file to `filesToRemove`<a name="line.2657"></a>
+<span class="sourceLineNo">2658</span>            storeFileSizes.add(length);<a name="line.2658"></a>
+<span class="sourceLineNo">2659</span>          } else {<a name="line.2659"></a>
+<span class="sourceLineNo">2660</span>            LOG.info("Can't archive compacted file " + file.getPath()<a name="line.2660"></a>
+<span class="sourceLineNo">2661</span>                + " because of either isCompactedAway = " + file.isCompactedAway()<a name="line.2661"></a>
+<span class="sourceLineNo">2662</span>                + " or file has reference, isReferencedInReads = " + file.isReferencedInReads()<a name="line.2662"></a>
+<span class="sourceLineNo">2663</span>                + ", skipping for now.");<a name="line.2663"></a>
+<span class="sourceLineNo">2664</span>          }<a name="line.2664"></a>
+<span class="sourceLineNo">2665</span>        } catch (Exception e) {<a name="line.2665"></a>
+<span class="sourceLineNo">2666</span>          String msg = "Exception while trying to close the compacted store file " +<a name="line.2666"></a>
+<span class="sourceLineNo">2667</span>              file.getPath().getName();<a name="line.2667"></a>
+<span class="sourceLineNo">2668</span>          if (storeClosing) {<a name="line.2668"></a>
+<span class="sourceLineNo">2669</span>            msg = "Store is closing. " + msg;<a name="line.2669"></a>
 <span class="sourceLineNo">2670</span>          }<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span>          if (!filesToRemove.isEmpty()) {<a name="line.2671"></a>
-<span class="sourceLineNo">2672</span>            clearCompactedfiles(filesToRemove);<a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>          }<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span>          throw fae;<a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>        }<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>      }<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span>    }<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span>    if (!filesToRemove.isEmpty()) {<a name="line.2678"></a>
-<span class="sourceLineNo">2679</span>      // Clear the compactedfiles from the store file manager<a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>      clearCompactedfiles(filesToRemove);<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span>      // Try to send report of this archival to the Master for updating quota usage faster<a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>      reportArchivedFilesForQuota(filesToRemove, storeFileSizes);<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>    }<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span>  }<a name="line.2684"></a>
-<span class="sourceLineNo">2685</span><a name="line.2685"></a>
-<span class="sourceLineNo">2686</span>  /**<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span>   * Computes the length of a store file without succumbing to any errors along the way. If an<a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>   * error is encountered, the implementation returns {@code 0} instead of the actual size.<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>   *<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span>   * @param file The file to compute the size of.<a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>   * @return The size in bytes of the provided {@code file}.<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>   */<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span>  long getStoreFileSize(HStoreFile file) {<a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    long length = 0;<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>    try {<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span>      file.initReader();<a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>      length = file.getReader().length();<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>    } catch (IOException e) {<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>      LOG.trace("Failed to open reader when trying to compute store file size, ignoring", e);<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>    } finally {<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>      try {<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span>        file.closeStoreFile(<a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>            file.getCacheConf() != null ? file.getCacheConf().shouldEvictOnClose() : true);<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>      } catch (IOException e) {<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span>        LOG.trace("Failed to close reader after computing store file size, ignoring", e);<a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>      }<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>    }<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span>    return length;<a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>  }<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span><a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>  public Long preFlushSeqIDEstimation() {<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>    return memstore.preFlushSeqIDEstimation();<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>  }<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span><a name="line.2714"></a>
-<span class="sourceLineNo">2715</span>  @Override<a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>  public boolean isSloppyMemStore() {<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>    return this.memstore.isSloppy();<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>  }<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span><a name="line.2719"></a>
-<span class="sourceLineNo">2720</span>  private void clearCompactedfiles(List&lt;HStoreFile&gt; filesToRemove) throws IOException {<a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>    LOG.trace("Clearing the compacted file {} from this store", filesToRemove);<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>    try {<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>      lock.writeLock().lock();<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>      this.getStoreEngine().getStoreFileManager().removeCompactedFiles(filesToRemove);<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>    } finally {<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span>      lock.writeLock().unlock();<a name="line.2726"></a>
-<span class="sourceLineNo">2727</span>    }<a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>  }<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span><a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>  void reportArchivedFilesForQuota(List&lt;? extends StoreFile&gt; archivedFiles, List&lt;Long&gt; fileSizes) {<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span>    // Sanity check from the caller<a name="line.2731"></a>
-<span class="sourceLineNo">2732</span>    if (archivedFiles.size() != fileSizes.size()) {<a name="line.2732"></a>
-<span class="sourceLineNo">2733</span>      throw new RuntimeException("Coding error: should never see lists of varying size");<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span>    }<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span>    RegionServerServices rss = this.region.getRegionServerServices();<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span>    if (rss == null) {<a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>      return;<a name="line.2737"></a>
+<span class="sourceLineNo">2671</span>          LOG.error(msg, e);<a name="line.2671"></a>
+<span class="sourceLineNo">2672</span>          //if we get an exception let caller know so it can abort the server<a name="line.2672"></a>
+<span class="sourceLineNo">2673</span>          if (storeClosing) {<a name="line.2673"></a>
+<span class="sourceLineNo">2674</span>            throw new IOException(msg, e);<a name="line.2674"></a>
+<span class="sourceLineNo">2675</span>          }<a name="line.2675"></a>
+<span class="sourceLineNo">2676</span>        }<a name="line.2676"></a>
+<span class="sourceLineNo">2677</span>      }<a name="line.2677"></a>
+<span class="sourceLineNo">2678</span>    }<a name="line.2678"></a>
+<span class="sourceLineNo">2679</span>    if (this.isPrimaryReplicaStore()) {<a name="line.2679"></a>
+<span class="sourceLineNo">2680</span>      // Only the primary region is allowed to move the file to archive.<a name="line.2680"></a>
+<span class="sourceLineNo">2681</span>      // The secondary region does not move the files to archive. Any active reads from<a name="line.2681"></a>
+<span class="sourceLineNo">2682</span>      // the secondary region will still work because the file as such has active readers on it.<a name="line.2682"></a>
+<span class="sourceLineNo">2683</span>      if (!filesToRemove.isEmpty()) {<a name="line.2683"></a>
+<span class="sourceLineNo">2684</span>        LOG.debug("Moving the files {} to archive", filesToRemove);<a name="line.2684"></a>
+<span class="sourceLineNo">2685</span>        // Only if this is successful it has to be removed<a name="line.2685"></a>
+<span class="sourceLineNo">2686</span>        try {<a name="line.2686"></a>
+<span class="sourceLineNo">2687</span>          this.fs.removeStoreFiles(this.getColumnFamilyDescriptor().getNameAsString(), filesToRemove);<a name="line.2687"></a>
+<span class="sourceLineNo">2688</span>        } catch (FailedArchiveException fae) {<a name="line.2688"></a>
+<span class="sourceLineNo">2689</span>          // Even if archiving some files failed, we still need to clear out any of the<a name="line.2689"></a>
+<span class="sourceLineNo">2690</span>          // files which were successfully archived.  Otherwise we will receive a<a name="line.2690"></a>
+<span class="sourceLineNo">2691</span>          // FileNotFoundException when we attempt to re-archive them in the next go around.<a name="line.2691"></a>
+<span class="sourceLineNo">2692</span>          Collection&lt;Path&gt; failedFiles = fae.getFailedFiles();<a name="line.2692"></a>
+<span class="sourceLineNo">2693</span>          Iterator&lt;HStoreFile&gt; iter = filesToRemove.iterator();<a name="line.2693"></a>
+<span class="sourceLineNo">2694</span>          Iterator&lt;Long&gt; sizeIter = storeFileSizes.iterator();<a name="line.2694"></a>
+<span class="sourceLineNo">2695</span>          while (iter.hasNext()) {<a name="line.2695"></a>
+<span class="sourceLineNo">2696</span>            sizeIter.next();<a name="line.2696"></a>
+<span class="sourceLineNo">2697</span>            if (failedFiles.contains(iter.next().getPath())) {<a name="line.2697"></a>
+<span class="sourceLineNo">2698</span>              iter.remove();<a name="line.2698"></a>
+<span class="sourceLineNo">2699</span>              sizeIter.remove();<a name="line.2699"></a>
+<span class="sourceLineNo">2700</span>            }<a name="line.2700"></a>
+<span class="sourceLineNo">2701</span>          }<a name="line.2701"></a>
+<span class="sourceLineNo">2702</span>          if (!filesToRemove.isEmpty()) {<a name="line.2702"></a>
+<span class="sourceLineNo">2703</span>            clearCompactedfiles(filesToRemove);<a name="line.2703"></a>
+<span class="sourceLineNo">2704</span>          }<a name="line.2704"></a>
+<span class="sourceLineNo">2705</span>          throw fae;<a name="line.2705"></a>
+<span class="sourceLineNo">2706</span>        }<a name="line.2706"></a>
+<span class="sourceLineNo">2707</span>      }<a name="line.2707"></a>
+<span class="sourceLineNo">2708</span>    }<a name="line.2708"></a>
+<span class="sourceLineNo">2709</span>    if (!filesToRemove.isEmpty()) {<a name="line.2709"></a>
+<span class="sourceLineNo">2710</span>      // Clear the compactedfiles from the store file manager<a name="line.2710"></a>
+<span class="sourceLineNo">2711</span>      clearCompactedfiles(filesToRemove);<a name="line.2711"></a>
+<span class="sourceLineNo">2712</span>      // Try to send report of this archival to the Master for updating quota usage faster<a name="line.2712"></a>
+<span class="sourceLineNo">2713</span>      reportArchivedFilesForQuota(filesToRemove, storeFileSizes);<a name="line.2713"></a>
+<span class="sourceLineNo">2714</span>    }<a name="line.2714"></a>
+<span class="sourceLineNo">2715</span>  }<a name="line.2715"></a>
+<span class="sourceLineNo">2716</span><a name="line.2716"></a>
+<span class="sourceLineNo">2717</span>  /**<a name="line.2717"></a>
+<span class="sourceLineNo">2718</span>   * Computes the length of a store file without succumbing to any errors along the way. If an<a name="line.2718"></a>
+<span class="sourceLineNo">2719</span>   * error is encountered, the implementation returns {@code 0} instead of the actual size.<a name="line.2719"></a>
+<span class="sourceLineNo">2720</span>   *<a name="line.2720"></a>
+<span class="sourceLineNo">2721</span>   * @param file The file to compute the size of.<a name="line.2721"></a>
+<span class="sourceLineNo">2722</span>   * @return The size in bytes of the provided {@code file}.<a name="line.2722"></a>
+<span class="sourceLineNo">2723</span>   */<a name="line.2723"></a>
+<span class="sourceLineNo">2724</span>  long getStoreFileSize(HStoreFile file) {<a name="line.2724"></a>
+<span class="sourceLineNo">2725</span>    long length = 0;<a name="line.2725"></a>
+<span class="sourceLineNo">2726</span>    try {<a name="line.2726"></a>
+<span class="sourceLineNo">2727</span>      file.initReader();<a name="line.2727"></a>
+<span class="sourceLineNo">2728</span>      length = file.getReader().length();<a name="line.2728"></a>
+<span class="sourceLineNo">2729</span>    } catch (IOException e) {<a name="line.2729"></a>
+<span class="sourceLineNo">2730</span>      LOG.trace("Failed to open reader when trying to compute store file size, ignoring", e);<a name="line.2730"></a>
+<span class="sourceLineNo">2731</span>    } finally {<a name="line.2731"></a>
+<span class="sourceLineNo">2732</span>      try {<a name="line.2732"></a>
+<span class="sourceLineNo">2733</span>        file.closeStoreFile(<a name="line.2733"></a>
+<span class="sourceLineNo">2734</span>            file.getCacheConf() != null ? file.getCacheConf().shouldEvictOnClose() : true);<a name="line.2734"></a>
+<span class="sourceLineNo">2735</span>      } catch (IOException e) {<a name="line.2735"></a>
+<span class="sourceLineNo">2736</span>        LOG.trace("Failed to close reader after computing store file size, ignoring", e);<a name="line.2736"></a>
+<span class="sourceLineNo">2737</span>      }<a name="line.2737"></a>
 <span class="sourceLineNo">2738</span>    }<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span>    List&lt;Entry&lt;String,Long&gt;&gt; filesWithSizes = new ArrayList&lt;&gt;(archivedFiles.size());<a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>    Iterator&lt;Long&gt; fileSizeIter = fileSizes.iterator();<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>    for (StoreFile storeFile : archivedFiles) {<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span>      final long fileSize = fileSizeIter.next();<a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>      if (storeFile.isHFile() &amp;&amp; fileSize != 0) {<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span>        filesWithSizes.add(Maps.immutableEntry(storeFile.getPath().getName(), fileSize));<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span>      }<a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>    }<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>    if (LOG.isTraceEnabled()) {<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>      LOG.trace("Files archived: " + archivedFiles + ", reporting the following to the Master: "<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span>          + filesWithSizes);<a name="line.2749"></a>
-<span class="sourceLineNo">2750</span>    }<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span>    boolean success = rss.reportFileArchivalForQuotas(getTableName(), filesWithSizes);<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>    if (!success) {<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>      LOG.warn("Failed to report archival of files: " + filesWithSizes);<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>    }<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span>  }<a name="line.2755"></a>
-<span class="sourceLineNo">2756</span><a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>  public int getCurrentParallelPutCount() {<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>    return currentParallelPutCount.get();<a name="line.2758"></a>
+<span class="sourceLineNo">2739</span>    return length;<a name="line.2739"></a>
+<span class="sourceLineNo">2740</span>  }<a name="line.2740"></a>
+<span class="sourceLineNo">2741</span><a name="line.2741"></a>
+<span class="sourceLineNo">2742</span>  public Long preFlushSeqIDEstimation() {<a name="line.2742"></a>
+<span class="sourceLineNo">2743</span>    return memstore.preFlushSeqIDEstimation();<a name="line.2743"></a>
+<span class="sourceLineNo">2744</span>  }<a name="line.2744"></a>
+<span class="sourceLineNo">2745</span><a name="line.2745"></a>
+<span class="sourceLineNo">2746</span>  @Override<a name="line.2746"></a>
+<span class="sourceLineNo">2747</span>  public boolean isSloppyMemStore() {<a name="line.2747"></a>
+<span class="sourceLineNo">2748</span>    return this.memstore.isSloppy();<a name="line.2748"></a>
+<span class="sourceLineNo">2749</span>  }<a name="line.2749"></a>
+<span class="sourceLineNo">2750</span><a name="line.2750"></a>
+<span class="sourceLineNo">2751</span>  private void clearCompactedfiles(List&lt;HStoreFile&gt; filesToRemove) throws IOException {<a name="line.2751"></a>
+<span class="sourceLineNo">2752</span>    LOG.trace("Clearing the compacted file {} from this store", filesToRemove);<a name="line.2752"></a>
+<span class="sourceLineNo">2753</span>    try {<a name="line.2753"></a>
+<span class="sourceLineNo">2754</span>      lock.writeLock().lock();<a name="line.2754"></a>
+<span class="sourceLineNo">2755</span>      this.getStoreEngine().getStoreFileManager().removeCompactedFiles(filesToRemove);<a name="line.2755"></a>
+<span class="sourceLineNo">2756</span>    } finally {<a name="line.2756"></a>
+<span class="sourceLineNo">2757</span>      lock.writeLock().unlock();<a name="line.2757"></a>
+<span class="sourceLineNo">2758</span>    }<a name="line.2758"></a>
 <span class="sourceLineNo">2759</span>  }<a name="line.2759"></a>
 <span class="sourceLineNo">2760</span><a name="line.2760"></a>
-<span class="sourceLineNo">2761</span>}<a name="line.2761"></a>
+<span class="sourceLineNo">2761</span>  void reportArchivedFilesForQuota(List&lt;? extends StoreFile&gt; archivedFiles, List&lt;Long&gt; fileSizes) {<a name="line.2761"></a>
+<span class="sourceLineNo">2762</span>    // Sanity check from the caller<a name="line.2762"></a>
+<span class="sourceLineNo">2763</span>    if (archivedFiles.size() != fileSizes.size()) {<a name="line.2763"></a>
+<span class="sourceLineNo">2764</span>      throw new RuntimeException("Coding error: should never see lists of varying size");<a name="line.2764"></a>
+<span class="sourceLineNo">2765</span>    }<a name="line.2765"></a>
+<span class="sourceLineNo">2766</span>    RegionServerServices rss = this.region.getRegionServerServices();<a name="line.2766"></a>
+<span class="sourceLineNo">2767</span>    if (rss == null) {<a name="line.2767"></a>
+<span class="sourceLineNo">2768</span>      return;<a name="line.2768"></a>
+<span class="sourceLineNo">2769</span>    }<a name="line.2769"></a>
+<span class="sourceLineNo">2770</span>    List&lt;Entry&lt;String,Long&gt;&gt; filesWithSizes = new ArrayList&lt;&gt;(archivedFiles.size());<a name="line.2770"></a>
+<span class="sourceLineNo">2771</span>    Iterator&lt;Long&gt; fileSizeIter = fileSizes.iterator();<a name="line.2771"></a>
+<span class="sourceLineNo">2772</span>    for (StoreFile storeFile : archivedFiles) {<a name="line.2772"></a>
+<span class="sourceLineNo">2773</span>      final long fileSize = fileSizeIter.next();<a name="line.2773"></a>
+<span class="sourceLineNo">2774</span>      if (storeFile.isHFile() &amp;&amp; fileSize != 0) {<a name="line.2774"></a>
+<span class="sourceLineNo">2775</span>        filesWithSizes.add(Maps.immutableEntry(storeFile.getPath().getName(), fileSize));<a name="line.2775"></a>
+<span class="sourceLineNo">2776</span>      }<a name="line.2776"></a>
+<span class="sourceLineNo">2777</span>    }<a name="line.2777"></a>
+<span class="sourceLineNo">2778</span>    if (LOG.isTraceEnabled()) {<a name="line.2778"></a>
+<span class="sourceLineNo">2779</span>      LOG.trace("Files archived: " + archivedFiles + ", reporting the following to the Master: "<a name="line.2779"></a>
+<span class="sourceLineNo">2780</span>          + filesWithSizes);<a name="line.2780"></a>
+<span class="sourceLineNo">2781</span>    }<a name="line.2781"></a>
+<span class="sourceLineNo">2782</span>    boolean success = rss.reportFileArchivalForQuotas(getTableName(), filesWithSizes);<a name="line.2782"></a>
+<span class="sourceLineNo">2783</span>    if (!success) {<a name="line.2783"></a>
+<span class="sourceLineNo">2784</span>      LOG.warn("Failed to report archival of files: " + filesWithSizes);<a name="line.2784"></a>
+<span class="sourceLineNo">2785</span>    }<a name="line.2785"></a>
+<span class="sourceLineNo">2786</span>  }<a name="line.2786"></a>
+<span class="sourceLineNo">2787</span><a name="line.2787"></a>
+<span class="sourceLineNo">2788</span>  public int getCurrentParallelPutCount() {<a name="line.2788"></a>
+<span class="sourceLineNo">2789</span>    return currentParallelPutCount.get();<a name="line.2789"></a>
+<span class="sourceLineNo">2790</span>  }<a name="line.2790"></a>
+<span class="sourceLineNo">2791</span><a name="line.2791"></a>
+<span class="sourceLineNo">2792</span>}<a name="line.2792"></a>
 
 
 


[36/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html b/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
index 88659fa..6fc579b 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
@@ -247,7 +247,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" tit
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#abort-java.lang.String-java.lang.Throwable-">abort</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#abortProcedure-long-boolean-">abortProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#addColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-long-long-">addColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#addReplicationPeer-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-boolean-">addReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balance--">balance</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balance-boolean-">balance</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balanceSwitch-boolean-">balanceSwitch</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMa
 ster.html#canCreateBaseZNode--">canCreateBaseZNode</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#canUpdateTableDescriptor--">canUpdateTableDescriptor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkIfShouldMoveSystemRegionAsync--">checkIfShouldMoveSystemRegionAsync</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkInitialized--">checkInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkServiceStarted--">checkServiceStarted</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkTableModifiable-org.apache.hadoop.hbase.TableName-">checkTableModifiable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#configureInfoServer--">configureInfoServer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#constructMaster-java.lang.Class-org.apache.hadoop.conf.Configuration-">constructMaster</a>, <a href="../../.
 ./../../org/apache/hadoop/hbase/master/HMaster.html#createMetaBootstrap--">createMetaBootstrap</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-long-long-">createNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createRpcServices--">createRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createServerManager-org.apache.hadoop.hbase.master.MasterServices-">createServerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createSystemTable-org.apache.hadoop.hbase.client.TableDescriptor-">createSystemTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-long-long-">createTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#decommissionRegionServers-java.util.List-boolean-">decommissionRegionSer
 vers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#decorateMasterConfiguration-org.apache.hadoop.conf.Configuration-">decorateMasterConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteColumn-org.apache.hadoop.hbase.TableName-byte:A-long-long-">deleteColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteNamespace-java.lang.String-long-long-">deleteNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteTable-org.apache.hadoop.hbase.TableName-long-long-">deleteTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#disableReplicationPeer-java.lang.String-">disableReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#disableTable-org.apache.hadoop.hbase.TableName-long-long-">disableTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#enableReplicationPeer-java.lang.String-
 ">enableReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#enableTable-org.apache.hadoop.hbase.TableName-long-long-">enableTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getAssignmentManager--">getAssignmentManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getAverageLoad--">getAverageLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getCatalogJanitor--">getCatalogJanitor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClientIdAuditPrefix--">getClientIdAuditPrefix</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetrics--">getClusterMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetrics-java.util.EnumSet-">getClusterMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetricsWithoutCoprocessor--">getClusterMetricsWi
 thoutCoprocessor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetricsWithoutCoprocessor-java.util.EnumSet-">getClusterMetricsWithoutCoprocessor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterSchema--">getClusterSchema</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getDumpServlet--">getDumpServlet</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getFavoredNodesManager--">getFavoredNodesManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getHFileCleaner--">getHFileCleaner</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getInitializedEvent--">getInitializedEvent</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLastMajorCompactionTimestamp-org.apache.hadoop.hbase.TableName-">getLastMajorCompactionTimestamp</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLast
 MajorCompactionTimestampForRegion-byte:A-">getLastMajorCompactionTimestampForRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadBalancer--">getLoadBalancer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadBalancerClassName--">getLoadBalancerClassName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadedCoprocessors--">getLoadedCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLockManager--">getLockManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLocks--">getLocks</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLogCleaner--">getLogCleaner</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterActiveTime--">getMasterActiveTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterCoprocessorHost--">getMasterCoprocessorHost</a>, <a href=
 "../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterCoprocessors--">getMasterCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterFileSystem--">getMasterFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterFinishedInitializationTime--">getMasterFinishedInitializationTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterMetrics--">getMasterMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterProcedureExecutor--">getMasterProcedureExecutor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterProcedureManagerHost--">getMasterProcedureManagerHost</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterQuotaManager--">getMasterQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterRpcServices--">getMasterRpcServices</a>, <a href
 ="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterStartTime--">getMasterStartTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterWalManager--">getMasterWalManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMergePlanCount--">getMergePlanCount</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMetaTableObserver--">getMetaTableObserver</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMobCompactionState-org.apache.hadoop.hbase.TableName-">getMobCompactionState</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNamespace-java.lang.String-">getNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNamespaces--">getNamespaces</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNumWALFiles--">getNumWALFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.
 html#getProcedures--">getProcedures</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getProcessName--">getProcessName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getQuotaObserverChore--">getQuotaObserverChore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionNormalizer--">getRegionNormalizer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionNormalizerTracker--">getRegionNormalizerTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerFatalLogBuffer--">getRegionServerFatalLogBuffer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerInfoPort-org.apache.hadoop.hbase.ServerName-">getRegionServerInfoPort</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerVersion-org.apache.hadoop.hbase.ServerName-">getRegionServerVersion</a>, <a href="../../../../../org/apache
 /hadoop/hbase/master/HMaster.html#getRemoteInetAddress-int-long-">getRemoteInetAddress</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationLoad-org.apache.hadoop.hbase.ServerName:A-">getReplicationLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationPeerConfig-java.lang.String-">getReplicationPeerConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationPeerManager--">getReplicationPeerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerManager--">getServerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerName--">getServerName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSnapshotManager--">getSnapshotManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSnapshotQuotaObserverChore--">getSnapshotQuotaObserverChore</a>, <a href="../../../../
 ../org/apache/hadoop/hbase/master/HMaster.html#getSpaceQuotaSnapshotNotifier--">getSpaceQuotaSnapshotNotifier</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSplitOrMergeTracker--">getSplitOrMergeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSplitPlanCount--">getSplitPlanCount</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSyncReplicationReplayWALManager--">getSyncReplicationReplayWALManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableDescriptors--">getTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableRegionForRow-org.apache.hadoop.hbase.TableName-byte:A-">getTableRegionForRow</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableStateManager--">getTableStateManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getUseThisHostnameInstead-org.apache.hadoo
 p.conf.Configuration-">getUseThisHostnameInstead</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getWalProcedureStore--">getWalProcedureStore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getZooKeeper--">getZooKeeper</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initClusterSchemaService--">initClusterSchemaService</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initializeZKBasedSystemTrackers--">initializeZKBasedSystemTrackers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isActiveMaster--">isActiveMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isBalancerOn--">isBalancerOn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCatalogJanitorEnabled--">isCatalogJanitorEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCleanerChoreEnabled--">isCleanerChoreEnabled</a>, <a hr
 ef="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInitialized--">isInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInMaintenanceMode--">isInMaintenanceMode</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isNormalizerOn--">isNormalizerOn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isSplitOrMergeEnabled-org.apache.hadoop.hbase.client.MasterSwitchType-">isSplitOrMergeEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listDecommissionedRegionServers--">listDecommissionedRegionServers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listReplicationPeers-java.lang.String-">listReplicationPeers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableDescriptors-java.lang.String-java.lang.String-java.util.List-boolean-">listTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaste
 r.html#listTableDescriptorsByNamespace-java.lang.String-">listTableDescriptorsByNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableNames-java.lang.String-java.lang.String-boolean-">listTableNames</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableNamesByNamespace-java.lang.String-">listTableNamesByNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#login-org.apache.hadoop.hbase.security.UserProvider-java.lang.String-">login</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#main-java.lang.String:A-">main</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#mergeRegions-org.apache.hadoop.hbase.client.RegionInfo:A-boolean-long-long-">mergeRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-long-long-">modifyColumn<
 /a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-long-long-">modifyNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyTable-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableDescriptor-long-long-">modifyTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#move-byte:A-byte:A-">move</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#normalizeRegions--">normalizeRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#recommissionRegionServer-org.apache.hadoop.hbase.ServerName-java.util.List-">recommissionRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#registerService-com.google.protobuf.Service-">registerService</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#remoteProcedureCompleted-long-">remoteProcedureComplet
 ed</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#remoteProcedureFailed-long-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">remoteProcedureFailed</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#removeReplicationPeer-java.lang.String-">removeReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionEnd-org.apache.hadoop.hbase.TableName-">reportMobCompactionEnd</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionStart-org.apache.hadoop.hbase.TableName-">reportMobCompactionStart</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#requestMobCompaction-org.apache.hadoop.hbase.TableName-java.util.List-boolean-">requestMobCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#restoreSnapshot-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-long-long-bo
 olean-">restoreSnapshot</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setCatalogJanitorEnabled-boolean-">setCatalogJanitorEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setInitialized-boolean-">setInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#shutdown--">shutdown</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#splitRegion-org.apache.hadoop.hbase.client.RegionInfo-byte:A-long-long-">splitRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stop-java.lang.String-">stop</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopMaster--">stopMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopServiceThreads--">stopServiceThreads</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#transitReplicationPeerSyncReplicationState-java.lang.String-org.apache.hadoop.hbase.repl
 ication.SyncReplicationState-">transitReplicationPeerSyncReplicationState</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-long-long-">truncateTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#updateConfigurationForQuotasObserver-org.apache.hadoop.conf.Configuration-">updateConfigurationForQuotasObserver</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#updateReplicationPeerConfig-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">updateReplicationPeerConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#waitForMasterActive--">waitForMasterActive</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#abort-java.lang.String-java.lang.Throwable-">abort</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#abortProcedure-long-boolean-">abortProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#addColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-long-long-">addColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#addReplicationPeer-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-boolean-">addReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balance--">balance</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balance-boolean-">balance</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balanceSwitch-boolean-">balanceSwitch</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMa
 ster.html#canCreateBaseZNode--">canCreateBaseZNode</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#canUpdateTableDescriptor--">canUpdateTableDescriptor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkIfShouldMoveSystemRegionAsync--">checkIfShouldMoveSystemRegionAsync</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkInitialized--">checkInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkServiceStarted--">checkServiceStarted</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkTableModifiable-org.apache.hadoop.hbase.TableName-">checkTableModifiable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#configureInfoServer--">configureInfoServer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#constructMaster-java.lang.Class-org.apache.hadoop.conf.Configuration-">constructMaster</a>, <a href="../../.
 ./../../org/apache/hadoop/hbase/master/HMaster.html#createMetaBootstrap--">createMetaBootstrap</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-long-long-">createNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createRpcServices--">createRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createServerManager-org.apache.hadoop.hbase.master.MasterServices-">createServerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createSystemTable-org.apache.hadoop.hbase.client.TableDescriptor-">createSystemTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-long-long-">createTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#decommissionRegionServers-java.util.List-boolean-">decommissionRegionSer
 vers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#decorateMasterConfiguration-org.apache.hadoop.conf.Configuration-">decorateMasterConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteColumn-org.apache.hadoop.hbase.TableName-byte:A-long-long-">deleteColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteNamespace-java.lang.String-long-long-">deleteNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteTable-org.apache.hadoop.hbase.TableName-long-long-">deleteTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#disableReplicationPeer-java.lang.String-">disableReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#disableTable-org.apache.hadoop.hbase.TableName-long-long-">disableTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#enableReplicationPeer-java.lang.String-
 ">enableReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#enableTable-org.apache.hadoop.hbase.TableName-long-long-">enableTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getAssignmentManager--">getAssignmentManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getAverageLoad--">getAverageLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getCatalogJanitor--">getCatalogJanitor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClientIdAuditPrefix--">getClientIdAuditPrefix</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetrics--">getClusterMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetrics-java.util.EnumSet-">getClusterMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetricsWithoutCoprocessor--">getClusterMetricsWi
 thoutCoprocessor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetricsWithoutCoprocessor-java.util.EnumSet-">getClusterMetricsWithoutCoprocessor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterSchema--">getClusterSchema</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getDumpServlet--">getDumpServlet</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getFavoredNodesManager--">getFavoredNodesManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getHFileCleaner--">getHFileCleaner</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getInitializedEvent--">getInitializedEvent</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLastMajorCompactionTimestamp-org.apache.hadoop.hbase.TableName-">getLastMajorCompactionTimestamp</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLast
 MajorCompactionTimestampForRegion-byte:A-">getLastMajorCompactionTimestampForRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadBalancer--">getLoadBalancer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadBalancerClassName--">getLoadBalancerClassName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadedCoprocessors--">getLoadedCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLockManager--">getLockManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLocks--">getLocks</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLogCleaner--">getLogCleaner</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterActiveTime--">getMasterActiveTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterCoprocessorHost--">getMasterCoprocessorHost</a>, <a href=
 "../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterCoprocessors--">getMasterCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterFileSystem--">getMasterFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterFinishedInitializationTime--">getMasterFinishedInitializationTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterMetrics--">getMasterMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterProcedureExecutor--">getMasterProcedureExecutor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterProcedureManagerHost--">getMasterProcedureManagerHost</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterQuotaManager--">getMasterQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterRpcServices--">getMasterRpcServices</a>, <a href
 ="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterStartTime--">getMasterStartTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterWalManager--">getMasterWalManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMergePlanCount--">getMergePlanCount</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMetaTableObserver--">getMetaTableObserver</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMobCompactionState-org.apache.hadoop.hbase.TableName-">getMobCompactionState</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNamespace-java.lang.String-">getNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNamespaces--">getNamespaces</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNumWALFiles--">getNumWALFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.
 html#getProcedures--">getProcedures</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getProcessName--">getProcessName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getQuotaObserverChore--">getQuotaObserverChore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionNormalizer--">getRegionNormalizer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionNormalizerTracker--">getRegionNormalizerTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerFatalLogBuffer--">getRegionServerFatalLogBuffer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerInfoPort-org.apache.hadoop.hbase.ServerName-">getRegionServerInfoPort</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerVersion-org.apache.hadoop.hbase.ServerName-">getRegionServerVersion</a>, <a href="../../../../../org/apache
 /hadoop/hbase/master/HMaster.html#getRemoteInetAddress-int-long-">getRemoteInetAddress</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationLoad-org.apache.hadoop.hbase.ServerName:A-">getReplicationLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationPeerConfig-java.lang.String-">getReplicationPeerConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationPeerManager--">getReplicationPeerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerManager--">getServerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerName--">getServerName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSnapshotManager--">getSnapshotManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSnapshotQuotaObserverChore--">getSnapshotQuotaObserverChore</a>, <a href="../../../../
 ../org/apache/hadoop/hbase/master/HMaster.html#getSpaceQuotaSnapshotNotifier--">getSpaceQuotaSnapshotNotifier</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSplitOrMergeTracker--">getSplitOrMergeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSplitPlanCount--">getSplitPlanCount</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSyncReplicationReplayWALManager--">getSyncReplicationReplayWALManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableDescriptors--">getTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableRegionForRow-org.apache.hadoop.hbase.TableName-byte:A-">getTableRegionForRow</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableStateManager--">getTableStateManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getUseThisHostnameInstead-org.apache.hadoo
 p.conf.Configuration-">getUseThisHostnameInstead</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getWalProcedureStore--">getWalProcedureStore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getZooKeeper--">getZooKeeper</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initClusterSchemaService--">initClusterSchemaService</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initializeZKBasedSystemTrackers--">initializeZKBasedSystemTrackers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isActiveMaster--">isActiveMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isBalancerOn--">isBalancerOn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCatalogJanitorEnabled--">isCatalogJanitorEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCleanerChoreEnabled--">isCleanerChoreEnabled</a>, <a hr
 ef="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInitialized--">isInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInMaintenanceMode--">isInMaintenanceMode</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isNormalizerOn--">isNormalizerOn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isSplitOrMergeEnabled-org.apache.hadoop.hbase.client.MasterSwitchType-">isSplitOrMergeEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listDecommissionedRegionServers--">listDecommissionedRegionServers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listReplicationPeers-java.lang.String-">listReplicationPeers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableDescriptors-java.lang.String-java.lang.String-java.util.List-boolean-">listTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaste
 r.html#listTableDescriptorsByNamespace-java.lang.String-">listTableDescriptorsByNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableNames-java.lang.String-java.lang.String-boolean-">listTableNames</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableNamesByNamespace-java.lang.String-">listTableNamesByNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#login-org.apache.hadoop.hbase.security.UserProvider-java.lang.String-">login</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#main-java.lang.String:A-">main</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#mergeRegions-org.apache.hadoop.hbase.client.RegionInfo:A-boolean-long-long-">mergeRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-long-long-">modifyColumn<
 /a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-long-long-">modifyNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyTable-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableDescriptor-long-long-">modifyTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#move-byte:A-byte:A-">move</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#normalizeRegions--">normalizeRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#recommissionRegionServer-org.apache.hadoop.hbase.ServerName-java.util.List-">recommissionRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#registerService-com.google.protobuf.Service-">registerService</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#remoteProcedureCompleted-long-">remoteProcedureComplet
 ed</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#remoteProcedureFailed-long-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">remoteProcedureFailed</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#removeReplicationPeer-java.lang.String-">removeReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionEnd-org.apache.hadoop.hbase.TableName-">reportMobCompactionEnd</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionStart-org.apache.hadoop.hbase.TableName-">reportMobCompactionStart</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#requestMobCompaction-org.apache.hadoop.hbase.TableName-java.util.List-boolean-">requestMobCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#restoreSnapshot-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-long-long-bo
 olean-">restoreSnapshot</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setCatalogJanitorEnabled-boolean-">setCatalogJanitorEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setInitialized-boolean-">setInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#shutdown--">shutdown</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#splitRegion-org.apache.hadoop.hbase.client.RegionInfo-byte:A-long-long-">splitRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stop-java.lang.String-">stop</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopMaster--">stopMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopServiceThreads--">stopServiceThreads</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#transitReplicationPeerSyncReplicationState-java.lang.String-org.apache.hadoop.hbase.repl
 ication.SyncReplicationState-">transitReplicationPeerSyncReplicationState</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-long-long-">truncateTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#updateConfigurationForQuotasObserver-org.apache.hadoop.conf.Configuration-">updateConfigurationForQuotasObserver</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#updateReplicationPeerConfig-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">updateReplicationPeerConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#waitForMasterActive--">waitForMasterActive</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#waitUntilMetaOnline--">waitUntilMetaOnline</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#waitUntilNamespaceOnline--">waitUntilNamespaceOnline</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">


[24/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html
index d2da8f4..27235ad 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html
@@ -63,3784 +63,3870 @@
 <span class="sourceLineNo">055</span>import javax.servlet.http.HttpServlet;<a name="line.55"></a>
 <span class="sourceLineNo">056</span>import javax.servlet.http.HttpServletRequest;<a name="line.56"></a>
 <span class="sourceLineNo">057</span>import javax.servlet.http.HttpServletResponse;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.commons.lang3.StringUtils;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.conf.Configuration;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.Path;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.ChoreService;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HConstants;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.ServerName;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableName;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.Result;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.MoveRegionProcedure;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.RegionStateNode;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.assignment.UnassignProcedure;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.116"></a>
-<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.123"></a>
-<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.127"></a>
-<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.133"></a>
-<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.master.replication.SyncReplicationReplayWALManager;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.master.replication.TransitPeerSyncReplicationStateProcedure;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.quotas.MasterQuotasObserver;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.replication.SyncReplicationState;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.util.HBaseFsck;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.zookeeper.KeeperException;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.eclipse.jetty.server.Server;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>import org.slf4j.Logger;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>import org.slf4j.LoggerFactory;<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.224"></a>
-<span class="sourceLineNo">225</span><a name="line.225"></a>
-<span class="sourceLineNo">226</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.228"></a>
-<span class="sourceLineNo">229</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.229"></a>
-<span class="sourceLineNo">230</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.230"></a>
-<span class="sourceLineNo">231</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.234"></a>
-<span class="sourceLineNo">235</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.235"></a>
-<span class="sourceLineNo">236</span> * run the cluster.  All others park themselves in their constructor until<a name="line.236"></a>
-<span class="sourceLineNo">237</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.237"></a>
-<span class="sourceLineNo">238</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.238"></a>
-<span class="sourceLineNo">239</span> *<a name="line.239"></a>
-<span class="sourceLineNo">240</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.240"></a>
-<span class="sourceLineNo">241</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.241"></a>
-<span class="sourceLineNo">242</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.242"></a>
-<span class="sourceLineNo">243</span> *<a name="line.243"></a>
-<span class="sourceLineNo">244</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.244"></a>
-<span class="sourceLineNo">245</span> *<a name="line.245"></a>
-<span class="sourceLineNo">246</span> * @see org.apache.zookeeper.Watcher<a name="line.246"></a>
-<span class="sourceLineNo">247</span> */<a name="line.247"></a>
-<span class="sourceLineNo">248</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.248"></a>
-<span class="sourceLineNo">249</span>@SuppressWarnings("deprecation")<a name="line.249"></a>
-<span class="sourceLineNo">250</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<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>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  private static class InitializationMonitor extends HasThread {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.263"></a>
-<span class="sourceLineNo">264</span>     * true, do nothing otherwise.<a name="line.264"></a>
-<span class="sourceLineNo">265</span>     */<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    public static final boolean HALT_DEFAULT = false;<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    private final HMaster master;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    private final long timeout;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    private final boolean haltOnTimeout;<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    InitializationMonitor(HMaster master) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      super("MasterInitializationMonitor");<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      this.master = master;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      this.setDaemon(true);<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>    @Override<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    public void run() {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      try {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>          Thread.sleep(timeout);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          if (master.isInitialized()) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          } else {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.290"></a>
-<span class="sourceLineNo">291</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.291"></a>
-<span class="sourceLineNo">292</span>            if (haltOnTimeout) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.293"></a>
-<span class="sourceLineNo">294</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.294"></a>
-<span class="sourceLineNo">295</span>              System.exit(-1);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>            }<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      } catch (InterruptedException ie) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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><a name="line.304"></a>
-<span class="sourceLineNo">305</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  //instance into web context.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  public static final String MASTER = "master";<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  // Manager and zk listener for master election<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  private final ActiveMasterManager activeMasterManager;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  // Region server tracker<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  private RegionServerTracker regionServerTracker;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  // Draining region server tracker<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  private DrainingServerTracker drainingServerTracker;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  // Tracker for load balancer state<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>  // Tracker for split and merge state<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.323"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.commons.lang3.StringUtils;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.conf.Configuration;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.fs.Path;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ChoreService;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.ClusterMetrics;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.ClusterMetrics.Option;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.ClusterMetricsBuilder;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.HBaseIOException;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.HConstants;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.InvalidFamilyOperationException;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.MasterNotRunningException;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.MetaTableAccessor;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.PleaseHoldException;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.ReplicationPeerNotFoundException;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.ServerName;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.TableDescriptors;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.TableName;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.TableNotDisabledException;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.UnknownRegionException;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.client.RegionInfoBuilder;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.client.Result;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.client.TableState;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.exceptions.MergeRegionException;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.executor.ExecutorType;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.favored.FavoredNodesManager;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.favored.FavoredNodesPromoter;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.http.InfoServer;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.ipc.RpcServer;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.ipc.ServerNotRunningYetException;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.log.HBaseMarkers;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.master.MasterRpcServices.BalanceSwitchMode;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.master.assignment.AssignProcedure;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.master.assignment.MoveRegionProcedure;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.master.assignment.RegionStateNode;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.master.assignment.RegionStates;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.master.assignment.TransitRegionStateProcedure;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.apache.hadoop.hbase.master.assignment.UnassignProcedure;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.apache.hadoop.hbase.master.balancer.BalancerChore;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>import org.apache.hadoop.hbase.master.balancer.BaseLoadBalancer;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>import org.apache.hadoop.hbase.master.balancer.ClusterStatusChore;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>import org.apache.hadoop.hbase.master.balancer.LoadBalancerFactory;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>import org.apache.hadoop.hbase.master.cleaner.CleanerChore;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>import org.apache.hadoop.hbase.master.cleaner.HFileCleaner;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>import org.apache.hadoop.hbase.master.cleaner.LogCleaner;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>import org.apache.hadoop.hbase.master.cleaner.ReplicationBarrierCleaner;<a name="line.119"></a>
+<span class="sourceLineNo">120</span>import org.apache.hadoop.hbase.master.locking.LockManager;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>import org.apache.hadoop.hbase.master.normalizer.NormalizationPlan.PlanType;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizer;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerChore;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>import org.apache.hadoop.hbase.master.normalizer.RegionNormalizerFactory;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>import org.apache.hadoop.hbase.master.procedure.CreateTableProcedure;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>import org.apache.hadoop.hbase.master.procedure.DeleteNamespaceProcedure;<a name="line.127"></a>
+<span class="sourceLineNo">128</span>import org.apache.hadoop.hbase.master.procedure.DeleteTableProcedure;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>import org.apache.hadoop.hbase.master.procedure.DisableTableProcedure;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>import org.apache.hadoop.hbase.master.procedure.EnableTableProcedure;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>import org.apache.hadoop.hbase.master.procedure.InitMetaProcedure;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureConstants;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv;<a name="line.133"></a>
+<span class="sourceLineNo">134</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureScheduler;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>import org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>import org.apache.hadoop.hbase.master.procedure.ModifyTableProcedure;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>import org.apache.hadoop.hbase.master.procedure.ProcedurePrepareLatch;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.procedure.RecoverMetaProcedure;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.procedure.ServerCrashProcedure;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.procedure.TruncateTableProcedure;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.replication.AbstractPeerProcedure;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.replication.AddPeerProcedure;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.master.replication.DisablePeerProcedure;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.master.replication.EnablePeerProcedure;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.master.replication.RemovePeerProcedure;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.master.replication.SyncReplicationReplayWALManager;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.master.replication.TransitPeerSyncReplicationStateProcedure;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.quotas.MasterQuotasObserver;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.replication.SyncReplicationState;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.util.HBaseFsck;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.util.RetryCounter;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.hadoop.hbase.util.RetryCounterFactory;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>import org.apache.zookeeper.KeeperException;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.eclipse.jetty.server.Server;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>import org.slf4j.Logger;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>import org.slf4j.LoggerFactory;<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>import org.apache.hbase.thirdparty.com.google.common.collect.ImmutableSet;<a name="line.225"></a>
+<span class="sourceLineNo">226</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.229"></a>
+<span class="sourceLineNo">230</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.233"></a>
+<span class="sourceLineNo">234</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>/**<a name="line.236"></a>
+<span class="sourceLineNo">237</span> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.237"></a>
+<span class="sourceLineNo">238</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.238"></a>
+<span class="sourceLineNo">239</span> * run the cluster.  All others park themselves in their constructor until<a name="line.239"></a>
+<span class="sourceLineNo">240</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.240"></a>
+<span class="sourceLineNo">241</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.241"></a>
+<span class="sourceLineNo">242</span> *<a name="line.242"></a>
+<span class="sourceLineNo">243</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.243"></a>
+<span class="sourceLineNo">244</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.244"></a>
+<span class="sourceLineNo">245</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.245"></a>
+<span class="sourceLineNo">246</span> *<a name="line.246"></a>
+<span class="sourceLineNo">247</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.247"></a>
+<span class="sourceLineNo">248</span> *<a name="line.248"></a>
+<span class="sourceLineNo">249</span> * @see org.apache.zookeeper.Watcher<a name="line.249"></a>
+<span class="sourceLineNo">250</span> */<a name="line.250"></a>
+<span class="sourceLineNo">251</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.251"></a>
+<span class="sourceLineNo">252</span>@SuppressWarnings("deprecation")<a name="line.252"></a>
+<span class="sourceLineNo">253</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<a name="line.254"></a>
+<span class="sourceLineNo">255</span><a name="line.255"></a>
+<span class="sourceLineNo">256</span>  /**<a name="line.256"></a>
+<span class="sourceLineNo">257</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.257"></a>
+<span class="sourceLineNo">258</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   */<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  private static class InitializationMonitor extends HasThread {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     * true, do nothing otherwise.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     */<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    public static final boolean HALT_DEFAULT = false;<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span>    private final HMaster master;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    private final long timeout;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    private final boolean haltOnTimeout;<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    InitializationMonitor(HMaster master) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      super("MasterInitializationMonitor");<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      this.master = master;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      this.setDaemon(true);<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 void run() {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      try {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>          Thread.sleep(timeout);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>          if (master.isInitialized()) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          } else {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.293"></a>
+<span class="sourceLineNo">294</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            if (haltOnTimeout) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.296"></a>
+<span class="sourceLineNo">297</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.297"></a>
+<span class="sourceLineNo">298</span>              System.exit(-1);<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>        }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      } catch (InterruptedException ie) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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>  }<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  //instance into web context.<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  public static final String MASTER = "master";<a name="line.310"></a>
+<span class="sourceLineNo">311</span><a name="line.311"></a>
+<span class="sourceLineNo">312</span>  // Manager and zk listener for master election<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  private final ActiveMasterManager activeMasterManager;<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  // Region server tracker<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  private RegionServerTracker regionServerTracker;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  // Draining region server tracker<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private DrainingServerTracker drainingServerTracker;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  // Tracker for load balancer state<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.323"></a>
 <span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  // Tracker for region normalizer state<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.326"></a>
+<span class="sourceLineNo">325</span>  // Tracker for split and merge state<a name="line.325"></a>
+<span class="sourceLineNo">326</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.326"></a>
 <span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  //Tracker for master maintenance mode setting<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.329"></a>
+<span class="sourceLineNo">328</span>  // Tracker for region normalizer state<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.329"></a>
 <span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  private ClusterSchemaService clusterSchemaService;<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    "hbase.master.wait.on.service.seconds";<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>  // Metrics for the HMaster<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  final MetricsMaster metricsMaster;<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  // file system manager for the master FS operations<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  private MasterFileSystem fileSystemManager;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  private MasterWalManager walManager;<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>  // server manager to deal with region server info<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  private volatile ServerManager serverManager;<a name="line.344"></a>
+<span class="sourceLineNo">331</span>  //Tracker for master maintenance mode setting<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>  private ClusterSchemaService clusterSchemaService;<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    "hbase.master.wait.on.service.seconds";<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>  // Metrics for the HMaster<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  final MetricsMaster metricsMaster;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  // file system manager for the master FS operations<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  private MasterFileSystem fileSystemManager;<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  private MasterWalManager walManager;<a name="line.344"></a>
 <span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  // manager of assignment nodes in zookeeper<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private AssignmentManager assignmentManager;<a name="line.347"></a>
+<span class="sourceLineNo">346</span>  // server manager to deal with region server info<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  private volatile ServerManager serverManager;<a name="line.347"></a>
 <span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  // manager of replication<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.350"></a>
+<span class="sourceLineNo">349</span>  // manager of assignment nodes in zookeeper<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  private AssignmentManager assignmentManager;<a name="line.350"></a>
 <span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  private SyncReplicationReplayWALManager syncReplicationReplayWALManager;<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span>  // buffer for "fatal error" notices from region servers<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  // in the cluster. This is only used for assisting<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  // operations/debugging.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>  // flag set after we become the active master (used for testing)<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  private volatile boolean activeMaster = false;<a name="line.360"></a>
+<span class="sourceLineNo">352</span>  // manager of replication<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  private SyncReplicationReplayWALManager syncReplicationReplayWALManager;<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>  // buffer for "fatal error" notices from region servers<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  // in the cluster. This is only used for assisting<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  // operations/debugging.<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.360"></a>
 <span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  // flag set after we complete initialization once active<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.363"></a>
+<span class="sourceLineNo">362</span>  // flag set after we become the active master (used for testing)<a name="line.362"></a>
+<span class="sourceLineNo">363</span>  private volatile boolean activeMaster = false;<a name="line.363"></a>
 <span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>  // flag set after master services are started,<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  // initialization may have not completed yet.<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  volatile boolean serviceStarted = false;<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>  // Maximum time we should run balancer for<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  private final int maxBlancingTime;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  // Maximum percent of regions in transition when balancing<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  private final double maxRitPercent;<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  private final LockManager lockManager = new LockManager(this);<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>  private LoadBalancer balancer;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  private RegionNormalizer normalizer;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  private BalancerChore balancerChore;<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  private RegionNormalizerChore normalizerChore;<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  private ClusterStatusChore clusterStatusChore;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span>  CatalogJanitor catalogJanitorChore;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  private LogCleaner logCleaner;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  private HFileCleaner hfileCleaner;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  private MobCompactionChore mobCompactChore;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  // used to synchronize the mobCompactionStates<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  // save the information of mob compactions in tables.<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  MasterCoprocessorHost cpHost;<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  private final boolean preLoadTableDescriptors;<a name="line.398"></a>
-<span class="sourceLineNo">399</span><a name="line.399"></a>
-<span class="sourceLineNo">400</span>  // Time stamps for when a hmaster became active<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  private long masterActiveTime;<a name="line.401"></a>
+<span class="sourceLineNo">365</span>  // flag set after we complete initialization once active<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>  // flag set after master services are started,<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  // initialization may have not completed yet.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  volatile boolean serviceStarted = false;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  // Maximum time we should run balancer for<a name="line.372"></a>
+<span class="sourceLineNo">373</span>  private final int maxBlancingTime;<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  // Maximum percent of regions in transition when balancing<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  private final double maxRitPercent;<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private final LockManager lockManager = new LockManager(this);<a name="line.377"></a>
+<span class="sourceLineNo">378</span><a name="line.378"></a>
+<span class="sourceLineNo">379</span>  private LoadBalancer balancer;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  private RegionNormalizer normalizer;<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  private BalancerChore balancerChore;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  private RegionNormalizerChore normalizerChore;<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  private ClusterStatusChore clusterStatusChore;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  CatalogJanitor catalogJanitorChore;<a name="line.386"></a>
+<span class="sourceLineNo">387</span>  private LogCleaner logCleaner;<a name="line.387"></a>
+<span class="sourceLineNo">388</span>  private HFileCleaner hfileCleaner;<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  private MobCompactionChore mobCompactChore;<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  // used to synchronize the mobCompactionStates<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  // save the information of mob compactions in tables.<a name="line.395"></a>
+<span class="sourceLineNo">396</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.397"></a>
+<span class="sourceLineNo">398</span><a name="line.398"></a>
+<span class="sourceLineNo">399</span>  MasterCoprocessorHost cpHost;<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>  private final boolean preLoadTableDescriptors;<a name="line.401"></a>
 <span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  private long masterFinishedInitializationTime;<a name="line.404"></a>
+<span class="sourceLineNo">403</span>  // Time stamps for when a hmaster became active<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  private long masterActiveTime;<a name="line.404"></a>
 <span class="sourceLineNo">405</span><a name="line.405"></a>
-<span class="sourceLineNo">406</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private final boolean masterCheckCompression;<a name="line.407"></a>
+<span class="sourceLineNo">406</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  private long masterFinishedInitializationTime;<a name="line.407"></a>
 <span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  //should we check encryption settings at master side, default true<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private final boolean masterCheckEncryption;<a name="line.410"></a>
+<span class="sourceLineNo">409</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  private final boolean masterCheckCompression;<a name="line.410"></a>
 <span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  // monitor for snapshot of hbase tables<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  SnapshotManager snapshotManager;<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  // monitor for distributed procedures<a name="line.416"></a>
-<span class="sourceLineNo">417</span>  private MasterProcedureManagerHost mpmHost;<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  private volatile MasterQuotaManager quotaManager;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  private QuotaObserverChore quotaObserverChore;<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.423"></a>
-<span class="sourceLineNo">424</span><a name="line.424"></a>
-<span class="sourceLineNo">425</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  private WALProcedureStore procedureStore;<a name="line.426"></a>
+<span class="sourceLineNo">412</span>  //should we check encryption settings at master side, default true<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  private final boolean masterCheckEncryption;<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>  // monitor for snapshot of hbase tables<a name="line.417"></a>
+<span class="sourceLineNo">418</span>  SnapshotManager snapshotManager;<a name="line.418"></a>
+<span class="sourceLineNo">419</span>  // monitor for distributed procedures<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  private MasterProcedureManagerHost mpmHost;<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.422"></a>
+<span class="sourceLineNo">423</span>  private volatile MasterQuotaManager quotaManager;<a name="line.423"></a>
+<span class="sourceLineNo">424</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  private QuotaObserverChore quotaObserverChore;<a name="line.425"></a>
+<span class="sourceLineNo">426</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.426"></a>
 <span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>  // handle table states<a name="line.428"></a>
-<span class="sourceLineNo">429</span>  private TableStateManager tableStateManager;<a name="line.429"></a>
+<span class="sourceLineNo">428</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  private WALProcedureStore procedureStore;<a name="line.429"></a>
 <span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>  private long splitPlanCount;<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  private long mergePlanCount;<a name="line.432"></a>
+<span class="sourceLineNo">431</span>  // handle table states<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  private TableStateManager tableStateManager;<a name="line.432"></a>
 <span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span>  /* Handle favored nodes information */<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  private FavoredNodesManager favoredNodesManager;<a name="line.435"></a>
+<span class="sourceLineNo">434</span>  private long splitPlanCount;<a name="line.434"></a>
+<span class="sourceLineNo">435</span>  private long mergePlanCount;<a name="line.435"></a>
 <span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  private Server masterJettyServer;<a name="line.438"></a>
+<span class="sourceLineNo">437</span>  /* Handle favored nodes information */<a name="line.437"></a>
+<span class="sourceLineNo">438</span>  private FavoredNodesManager favoredNodesManager;<a name="line.438"></a>
 <span class="sourceLineNo">439</span><a name="line.439"></a>
-<span class="sourceLineNo">440</span>  public static class RedirectServlet extends HttpServlet {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    private final int regionServerInfoPort;<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    private final String regionServerHostname;<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>    /**<a name="line.445"></a>
-<span class="sourceLineNo">446</span>     * @param infoServer that we're trying to send all requests to<a name="line.446"></a>
-<span class="sourceLineNo">447</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.447"></a>
-<span class="sourceLineNo">448</span>     */<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>       regionServerInfoPort = infoServer.getPort();<a name="line.450"></a>
-<span class="sourceLineNo">451</span>       regionServerHostname = hostname;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    @Override<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    public void doGet(HttpServletRequest request,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      String redirectHost = regionServerHostname;<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      if(redirectHost == null) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        redirectHost = request.getServerName();<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.461"></a>
-<span class="sourceLineNo">462</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.462"></a>
-<span class="sourceLineNo">463</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.463"></a>
-<span class="sourceLineNo">464</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.464"></a>
-<span class="sourceLineNo">465</span>              "to an appropriate hostname.");<a name="line.465"></a>
-<span class="sourceLineNo">466</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.466"></a>
-<span class="sourceLineNo">467</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.467"></a>
-<span class="sourceLineNo">468</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.468"></a>
-<span class="sourceLineNo">469</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.469"></a>
-<span class="sourceLineNo">470</span>          return;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      String redirectUrl = request.getScheme() + "://"<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.476"></a>
-<span class="sourceLineNo">477</span>        + request.getRequestURI();<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      response.sendRedirect(redirectUrl);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    }<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>  /**<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * Initializes the HMaster. The steps are as follows:<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * &l

<TRUNCATED>

[40/40] hbase-site git commit: Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.

Posted by gi...@apache.org.
Published site at 6d7bc0e98b25215e79f67f107fd0d3306dfcf352.


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

Branch: refs/heads/asf-site
Commit: 738e976e878fbe2c7fa00054696f60a85ef98101
Parents: bcb8946
Author: jenkins <bu...@apache.org>
Authored: Mon Sep 17 14:53:08 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Mon Sep 17 14:53:08 2018 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |    4 +-
 apache_hbase_reference_guide.pdf                |    4 +-
 book.html                                       |    2 +-
 bulk-loads.html                                 |    4 +-
 checkstyle-aggregate.html                       |  406 +-
 checkstyle.rss                                  |   16 +-
 coc.html                                        |    4 +-
 dependencies.html                               |    4 +-
 dependency-convergence.html                     |    4 +-
 dependency-info.html                            |    4 +-
 dependency-management.html                      |    4 +-
 devapidocs/allclasses-frame.html                |    1 +
 devapidocs/allclasses-noframe.html              |    1 +
 devapidocs/constant-values.html                 |    6 +-
 devapidocs/index-all.html                       |   51 +-
 .../hadoop/hbase/backup/package-tree.html       |    2 +-
 .../hadoop/hbase/class-use/ServerName.html      |   33 +-
 .../hbase/client/class-use/RegionInfo.html      |   68 +-
 .../hadoop/hbase/client/package-tree.html       |   24 +-
 .../hadoop/hbase/coprocessor/package-tree.html  |    2 +-
 .../hadoop/hbase/filter/package-tree.html       |   10 +-
 .../hadoop/hbase/io/HalfStoreFileReader.html    |   21 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |    4 +-
 .../apache/hadoop/hbase/ipc/package-tree.html   |    2 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |    2 +-
 .../master/HMaster.InitializationMonitor.html   |   20 +-
 .../master/HMaster.MasterStoppedException.html  |    4 +-
 .../hbase/master/HMaster.RedirectServlet.html   |   12 +-
 .../master/HMaster.TableDescriptorGetter.html   |    4 +-
 .../org/apache/hadoop/hbase/master/HMaster.html |  643 +-
 .../master/HMasterCommandLine.LocalHMaster.html |    2 +-
 .../hadoop/hbase/master/MasterRpcServices.html  |  182 +-
 .../hadoop/hbase/master/MasterWalManager.html   |  104 +-
 .../hbase/master/RegionServerTracker.html       |   19 +-
 .../master/assignment/AssignmentManager.html    |   88 +-
 .../hadoop/hbase/master/package-tree.html       |    4 +-
 .../hbase/master/procedure/package-tree.html    |    4 +-
 .../org/apache/hadoop/hbase/package-tree.html   |   16 +-
 .../hadoop/hbase/procedure2/package-tree.html   |    4 +-
 .../hadoop/hbase/quotas/package-tree.html       |    8 +-
 .../hadoop/hbase/regionserver/HMobStore.html    |    2 +-
 .../hbase/regionserver/HRegionServer.html       |   34 +-
 .../hadoop/hbase/regionserver/HStore.html       |  302 +-
 .../hadoop/hbase/regionserver/HStoreFile.html   |  266 +-
 .../regionserver/StoreFileReader.Listener.html  |  230 +
 .../hbase/regionserver/StoreFileReader.html     |  184 +-
 .../regionserver/StorefileRefresherChore.html   |    4 +-
 .../regionserver/class-use/HStoreFile.html      |   17 +-
 .../class-use/StoreFileReader.Listener.html     |  193 +
 .../regionserver/class-use/StoreFileReader.html |   21 +
 .../hbase/regionserver/package-frame.html       |    1 +
 .../hbase/regionserver/package-summary.html     |    4 +
 .../hadoop/hbase/regionserver/package-tree.html |   21 +-
 .../hadoop/hbase/regionserver/package-use.html  |   33 +-
 .../regionserver/querymatcher/package-tree.html |    2 +-
 .../hbase/security/access/package-tree.html     |    2 +-
 .../hadoop/hbase/security/package-tree.html     |    2 +-
 .../hadoop/hbase/thrift/package-tree.html       |    4 +-
 .../hadoop/hbase/util/RetryCounterFactory.html  |   24 +-
 .../apache/hadoop/hbase/util/package-tree.html  |   10 +-
 devapidocs/overview-tree.html                   |    3 +-
 .../org/apache/hadoop/hbase/Version.html        |    6 +-
 .../master/HMaster.InitializationMonitor.html   | 7460 +++++++++---------
 .../master/HMaster.MasterStoppedException.html  | 7460 +++++++++---------
 .../hbase/master/HMaster.RedirectServlet.html   | 7460 +++++++++---------
 .../master/HMaster.TableDescriptorGetter.html   | 7460 +++++++++---------
 .../org/apache/hadoop/hbase/master/HMaster.html | 7460 +++++++++---------
 .../MasterRpcServices.BalanceSwitchMode.html    | 3613 +++++----
 .../hadoop/hbase/master/MasterRpcServices.html  | 3613 +++++----
 .../hadoop/hbase/master/MasterWalManager.html   |  398 +-
 .../hbase/master/RegionServerTracker.html       |  146 +-
 .../hbase/master/TableNamespaceManager.html     |   28 +-
 ...signmentManager.RegionInTransitionChore.html | 1317 ++--
 ...ssignmentManager.RegionInTransitionStat.html | 1317 ++--
 .../master/assignment/AssignmentManager.html    | 1317 ++--
 .../master/procedure/DisableTableProcedure.html |    2 +-
 .../master/procedure/EnableTableProcedure.html  |    2 +-
 .../HRegionServer.CompactionChecker.html        |  308 +-
 .../HRegionServer.MovedRegionInfo.html          |  308 +-
 .../HRegionServer.MovedRegionsCleaner.html      |  308 +-
 .../HRegionServer.PeriodicMemStoreFlusher.html  |  308 +-
 .../hbase/regionserver/HRegionServer.html       |  308 +-
 .../regionserver/HStore.StoreFlusherImpl.html   |  393 +-
 .../hadoop/hbase/regionserver/HStore.html       |  393 +-
 .../hadoop/hbase/regionserver/HStoreFile.html   | 1089 +--
 .../regionserver/StoreFileReader.Listener.html  |  740 ++
 .../hbase/regionserver/StoreFileReader.html     | 1109 +--
 .../hadoop/hbase/util/RetryCounterFactory.html  |   36 +-
 downloads.html                                  |    4 +-
 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                   |   20 +
 ...cing.BlockCompactionsInCompletionHStore.html |    2 +-
 .../hbase/TestLocalHBaseCluster.MyHMaster.html  |    2 +-
 .../hbase/TestMetaTableAccessor.MetaTask.html   |   20 +-
 ...estMetaTableAccessor.SpyingRpcScheduler.html |    8 +-
 ...TableAccessor.SpyingRpcSchedulerFactory.html |    6 +-
 .../hadoop/hbase/TestMetaTableAccessor.html     |  126 +-
 .../hadoop/hbase/backup/package-tree.html       |    2 +-
 .../hbase/class-use/HBaseClassTestRule.html     |   28 +-
 .../hbase/class-use/HBaseTestingUtility.html    |   34 +-
 ...estFromClientSideScanExcpetion.MyHStore.html |    2 +-
 ...dpoint.HStoreWithFaultyRefreshHFilesAPI.html |    2 +-
 .../master/TestGetReplicationLoad.MyMaster.html |    2 +-
 .../master/TestMasterMetrics.MyMaster.html      |    2 +-
 .../TestShutdownBackupMaster.MockHMaster.html   |    2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |   10 +-
 .../hadoop/hbase/procedure/package-tree.html    |    8 +-
 .../hbase/regionserver/MockHStoreFile.html      |    4 +-
 .../hbase/regionserver/TestCellSkipListSet.html |    4 +-
 .../TestCleanupCompactedFileOnRegionClose.html  |  380 +
 .../regionserver/TestClearRegionBlockCache.html |    4 +-
 .../TestHRegion.HStoreForTesting.html           |    2 +-
 .../hbase/regionserver/TestHStore.MyStore.html  |    2 +-
 ...egionMergeTransactionOnCluster.MyMaster.html |    2 +-
 .../TestSplitTransactionOnCluster.MyMaster.html |    2 +-
 .../TestCleanupCompactedFileOnRegionClose.html  |  125 +
 .../hbase/regionserver/package-frame.html       |    1 +
 .../hbase/regionserver/package-summary.html     |  488 +-
 .../hadoop/hbase/regionserver/package-tree.html |    7 +-
 ...stReplicationProcedureRetry.MockHMaster.html |    2 +-
 .../apache/hadoop/hbase/test/package-tree.html  |    4 +-
 testdevapidocs/overview-tree.html               |    3 +-
 .../hbase/TestMetaTableAccessor.MetaTask.html   | 1646 ++--
 ...estMetaTableAccessor.SpyingRpcScheduler.html | 1646 ++--
 ...TableAccessor.SpyingRpcSchedulerFactory.html | 1646 ++--
 .../hadoop/hbase/TestMetaTableAccessor.html     | 1646 ++--
 .../TestCleanupCompactedFileOnRegionClose.html  |  282 +
 149 files changed, 34432 insertions(+), 31345 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index a6c46a0..4adf8bc 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -601,7 +601,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-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index e1c14d0..c8a7d91 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,8 +5,8 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 1.5.0.alpha.15, based on Prawn 2.2.2)
 /Producer (Apache HBase Team)
-/ModDate (D:20180916143310+00'00')
-/CreationDate (D:20180916144831+00'00')
+/ModDate (D:20180917143345+00'00')
+/CreationDate (D:20180917144945+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index acf5232..6039abe 100644
--- a/book.html
+++ b/book.html
@@ -41284,7 +41284,7 @@ org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2018-09-16 14:33:10 UTC
+Last updated 2018-09-17 14:33:45 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index 9a7c919..65eb803 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -306,7 +306,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-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index ec310f5..cda194b 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -281,7 +281,7 @@
 <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>3739</td>
+<td>3740</td>
 <td>0</td>
 <td>0</td>
 <td>15224</td></tr></table></div>
@@ -9813,12 +9813,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>733</td>
+<td>734</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>3540</td>
+<td>3539</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td>misc</td>
@@ -18397,49 +18397,49 @@
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>114</td></tr>
+<td>130</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>218</td></tr>
+<td>234</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>219</td></tr>
+<td>235</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>235</td></tr>
+<td>251</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>273</td></tr>
+<td>289</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>296</td></tr>
+<td>312</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>308</td></tr>
+<td>324</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 103).</td>
-<td>688</td></tr></table></div>
+<td>704</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.TestMetaTableAccessorNoCluster.java">org/apache/hadoop/hbase/TestMetaTableAccessorNoCluster.java</h3>
 <table border="0" class="table table-striped">
@@ -19148,7 +19148,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 0 has parse error. Details: no viable alternative at input '   *' while parsing JAVADOC_TAG</td>
 <td>117</td></tr>
 <tr class="b">
@@ -60277,919 +60277,919 @@
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
-<td>447</td></tr>
+<td>450</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctor def' child has incorrect indentation level 7, expected level should be 6.</td>
-<td>450</td></tr>
+<td>453</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctor def' child has incorrect indentation level 7, expected level should be 6.</td>
-<td>451</td></tr>
+<td>454</td></tr>
 <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>461</td></tr>
+<td>464</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 105).</td>
-<td>463</td></tr>
+<td>466</td></tr>
 <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>464</td></tr>
+<td>467</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 103).</td>
-<td>466</td></tr>
+<td>469</td></tr>
 <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 118).</td>
-<td>467</td></tr>
+<td>470</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 120).</td>
-<td>468</td></tr>
+<td>471</td></tr>
 <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 103).</td>
-<td>469</td></tr>
+<td>472</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 115).</td>
-<td>473</td></tr>
+<td>476</td></tr>
 <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>502</td></tr>
+<td>505</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 114).</td>
-<td>647</td></tr>
+<td>650</td></tr>
 <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 131).</td>
-<td>661</td></tr>
+<td>664</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>791</td></tr>
+<td>794</td></tr>
 <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 258 lines (max allowed is 150).</td>
-<td>883</td></tr>
+<td>Method length is 279 lines (max allowed is 150).</td>
+<td>886</td></tr>
 <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 has incorrect indentation level 3, expected level should be 4.</td>
-<td>1296</td></tr>
+<td>1382</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' child has incorrect indentation level 3, expected level should be 4.</td>
-<td>1298</td></tr>
+<td>1384</td></tr>
 <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 has incorrect indentation level 3, expected level should be 4.</td>
-<td>1300</td></tr>
+<td>1386</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' child has incorrect indentation level 3, expected level should be 4.</td>
-<td>1302</td></tr>
+<td>1388</td></tr>
 <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 has incorrect indentation level 3, expected level should be 4.</td>
-<td>1304</td></tr>
+<td>1390</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' child has incorrect indentation level 3, expected level should be 4.</td>
-<td>1312</td></tr>
+<td>1398</td></tr>
 <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 has incorrect indentation level 3, expected level should be 4.</td>
-<td>1313</td></tr>
+<td>1399</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' child has incorrect indentation level 3, expected level should be 4.</td>
-<td>1318</td></tr>
+<td>1404</td></tr>
 <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 has incorrect indentation level 3, expected level should be 4.</td>
-<td>1319</td></tr>
+<td>1405</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>1527</td></tr>
+<td>1613</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>1549</td></tr>
+<td>1635</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>1566</td></tr>
+<td>1652</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>1601</td></tr>
+<td>1687</td></tr>
 <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>1745</td></tr>
+<td>1831</td></tr>
 <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>1749</td></tr>
+<td>1835</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 modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1761</td></tr>
+<td>1847</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1763</td></tr>
+<td>1849</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' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1765</td></tr>
+<td>1851</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1768</td></tr>
+<td>1854</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' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1771</td></tr>
+<td>1857</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1772</td></tr>
+<td>1858</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 modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1774</td></tr>
+<td>1860</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1776</td></tr>
+<td>1862</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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1777</td></tr>
+<td>1863</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' has incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>1778</td></tr>
+<td>1864</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1784</td></tr>
+<td>1870</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1788</td></tr>
+<td>1874</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' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1790</td></tr>
+<td>1876</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1791</td></tr>
+<td>1877</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' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1794</td></tr>
+<td>1880</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1795</td></tr>
+<td>1881</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 modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1797</td></tr>
+<td>1883</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1799</td></tr>
+<td>1885</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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1800</td></tr>
+<td>1886</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' has incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>1801</td></tr>
+<td>1887</td></tr>
 <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 116).</td>
-<td>1820</td></tr>
+<td>1906</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 105).</td>
-<td>1822</td></tr>
+<td>1908</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 modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1913</td></tr>
+<td>1999</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1915</td></tr>
+<td>2001</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' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1917</td></tr>
+<td>2003</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1924</td></tr>
+<td>2010</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' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1925</td></tr>
+<td>2011</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1927</td></tr>
+<td>2013</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' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1929</td></tr>
+<td>2015</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1930</td></tr>
+<td>2016</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 modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1932</td></tr>
+<td>2018</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1934</td></tr>
+<td>2020</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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1935</td></tr>
+<td>2021</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' has incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>1936</td></tr>
+<td>2022</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>1966</td></tr>
+<td>2052</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>2216</td></tr>
+<td>2302</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>2217</td></tr>
+<td>2303</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>2224</td></tr>
+<td>2310</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>2225</td></tr>
+<td>2311</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>2231</td></tr>
+<td>2317</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>2232</td></tr>
+<td>2318</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>2239</td></tr>
+<td>2325</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>2240</td></tr>
+<td>2326</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>2245</td></tr>
+<td>2331</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 modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2263</td></tr>
+<td>2349</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2265</td></tr>
+<td>2351</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' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2267</td></tr>
+<td>2353</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2273</td></tr>
+<td>2359</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' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2274</td></tr>
+<td>2360</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2276</td></tr>
+<td>2362</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' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2278</td></tr>
+<td>2364</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2279</td></tr>
+<td>2365</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 modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2281</td></tr>
+<td>2367</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2283</td></tr>
+<td>2369</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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2284</td></tr>
+<td>2370</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' has incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>2285</td></tr>
+<td>2371</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 modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2298</td></tr>
+<td>2384</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2300</td></tr>
+<td>2386</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' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2302</td></tr>
+<td>2388</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2303</td></tr>
+<td>2389</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' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2304</td></tr>
+<td>2390</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2306</td></tr>
+<td>2392</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' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2308</td></tr>
+<td>2394</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2309</td></tr>
+<td>2395</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 modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2311</td></tr>
+<td>2397</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2313</td></tr>
+<td>2399</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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2314</td></tr>
+<td>2400</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' has incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>2315</td></tr>
+<td>2401</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 modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2398</td></tr>
+<td>2484</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2400</td></tr>
+<td>2486</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' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2406</td></tr>
+<td>2492</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2407</td></tr>
+<td>2493</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' has incorrect indentation level 10, expected level should be one of the following: 12, 14.</td>
-<td>2408</td></tr>
+<td>2494</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 12, expected level should be one of the following: 14, 16.</td>
-<td>2409</td></tr>
+<td>2495</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' has incorrect indentation level 12, expected level should be one of the following: 14, 16.</td>
-<td>2410</td></tr>
+<td>2496</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 14, expected level should be one of the following: 16, 18.</td>
-<td>2411</td></tr>
+<td>2497</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' has incorrect indentation level 14, expected level should be one of the following: 16, 18.</td>
-<td>2412</td></tr>
+<td>2498</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 16, expected level should be one of the following: 18, 20.</td>
-<td>2413</td></tr>
+<td>2499</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if rcurly' has incorrect indentation level 14, expected level should be one of the following: 16, 18.</td>
-<td>2415</td></tr>
+<td>2501</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if rcurly' has incorrect indentation level 12, expected level should be one of the following: 14, 16.</td>
-<td>2416</td></tr>
+<td>2502</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if rcurly' has incorrect indentation level 10, expected level should be one of the following: 12, 14.</td>
-<td>2417</td></tr>
+<td>2503</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 12, expected level should be one of the following: 14, 16.</td>
-<td>2418</td></tr>
+<td>2504</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if rcurly' has incorrect indentation level 10, expected level should be one of the following: 12, 14.</td>
-<td>2419</td></tr>
+<td>2505</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if rcurly' has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2420</td></tr>
+<td>2506</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' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2422</td></tr>
+<td>2508</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2429</td></tr>
+<td>2515</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' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2430</td></tr>
+<td>2516</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2432</td></tr>
+<td>2518</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' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2434</td></tr>
+<td>2520</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2435</td></tr>
+<td>2521</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 modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2437</td></tr>
+<td>2523</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2439</td></tr>
+<td>2525</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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2440</td></tr>
+<td>2526</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' has incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>2441</td></tr>
+<td>2527</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 modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2451</td></tr>
+<td>2537</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2453</td></tr>
+<td>2539</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' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2455</td></tr>
+<td>2541</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2465</td></tr>
+<td>2551</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' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2466</td></tr>
+<td>2552</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2468</td></tr>
+<td>2554</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' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2470</td></tr>
+<td>2556</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2471</td></tr>
+<td>2557</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 modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2473</td></tr>
+<td>2559</td></tr>
 <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 has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2475</td></tr>
+<td>2561</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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2476</td></tr>
+<td>2562</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' has incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>2477</td></tr>
+<td>2563</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>2489</td></tr>
+<td>2575</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2574</td></tr>
+<td>2660</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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2578</td></tr>
+<td>2664</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2580</td></tr>
+<td>2666</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' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2582</td></tr>
+<td>2668</td></tr>
 <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' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2583</td></tr>
+<td>2669</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' has incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>2584</td></tr>
+<td>2670</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>3044</td></tr>
+<td>3130</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>3220</td></tr>
+<td>3306</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>3222</td></tr>
+<td>3308</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>3315</td></tr>
+<td>3401</td></tr>
 <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>3345</td></tr>
+<td>3431</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>3352</td></tr>
+<td>3438</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>3357</td></tr>
+<td>3443</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>3386</td></tr>
+<td>3472</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 111).</td>
-<td>3484</td></tr></table></div>
+<td>3570</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.HMasterCommandLine.java">org/apache/hadoop/hbase/master/HMasterCommandLine.java</h3>
 <table border="0" class="table table-striped">
@@ -61561,61 +61561,61 @@
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>578</td></tr>
+<td>577</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>623</td></tr>
+<td>622</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>978</td></tr>
+<td>977</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>1005</td></tr>
+<td>1004</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>1007</td></tr>
+<td>1006</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>1046</td></tr>
+<td>1045</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>1151</td></tr>
+<td>1150</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>1392</td></tr>
+<td>1391</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>1634</td></tr>
+<td>1633</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>1695</td></tr></table></div>
+<td>1694</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.MasterServices.java">org/apache/hadoop/hbase/master/MasterServices.java</h3>
 <table border="0" class="table table-striped">
@@ -61918,7 +61918,7 @@
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>192</td></tr></table></div>
+<td>216</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.MetricsAssignmentManager.java">org/apache/hadoop/hbase/master/MetricsAssignmentManager.java</h3>
 <table border="0" class="table table-striped">
@@ -63739,49 +63739,49 @@
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1353</td></tr>
+<td>1354</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>1355</td></tr>
+<td>1356</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>1358</td></tr>
+<td>1359</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>1363</td></tr>
+<td>1364</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>1666</td></tr>
+<td>1667</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>1791</td></tr>
+<td>1792</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'lambda arguments' has incorrect indentation level 8, expected level should be 6.</td>
-<td>1839</td></tr>
+<td>1840</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>1856</td></tr></table></div>
+<td>1857</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.assignment.GCMergedRegionsProcedure.java">org/apache/hadoop/hbase/master/assignment/GCMergedRegionsProcedure.java</h3>
 <table border="0" class="table table-striped">
@@ -77590,37 +77590,37 @@
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
-<td>761</td></tr>
+<td>765</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>770</td></tr>
+<td>774</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>790</td></tr>
+<td>794</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>791</td></tr>
+<td>795</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>796</td></tr>
+<td>800</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>811</td></tr>
+<td>815</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
@@ -78310,7 +78310,7 @@
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 102).</td>
-<td>2656</td></tr></table></div>
+<td>2687</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.HStoreFile.java">org/apache/hadoop/hbase/regionserver/HStoreFile.java</h3>
 <table border="0" class="table table-striped">
@@ -78325,37 +78325,37 @@
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>200</td></tr>
+<td>209</td></tr>
 <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>220</td></tr>
+<td>229</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>295</td></tr>
+<td>305</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>348</td></tr>
+<td>358</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>519</td></tr>
+<td>534</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>530</td></tr></table></div>
+<td>558</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.HeapMemoryManager.java">org/apache/hadoop/hbase/regionserver/HeapMemoryManager.java</h3>
 <table border="0" class="table table-striped">
@@ -82045,19 +82045,19 @@
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>475</td></tr>
+<td>488</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>495</td></tr>
+<td>508</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>614</td></tr></table></div>
+<td>627</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.StoreFileScanner.java">org/apache/hadoop/hbase/regionserver/StoreFileScanner.java</h3>
 <table border="0" class="table table-striped">
@@ -118145,7 +118145,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index 39d3439..5eed94a 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -25,7 +25,7 @@ under the License.
     <language>en-us</language>
     <copyright>&#169;2007 - 2018 The Apache Software Foundation</copyright>
     <item>
-      <title>File: 3739,
+      <title>File: 3740,
              Errors: 15224,
              Warnings: 0,
              Infos: 0
@@ -51566,6 +51566,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.regionserver.TestCleanupCompactedFileOnRegionClose.java">org/apache/hadoop/hbase/regionserver/TestCleanupCompactedFileOnRegionClose.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.hbase.master.procedure.TestModifyNamespaceProcedure.java">org/apache/hadoop/hbase/master/procedure/TestModifyNamespaceProcedure.java</a>
                 </td>
                 <td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 8366092..e454d71 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -375,7 +375,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-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index f38ce28..7b51a22 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -440,7 +440,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 1325221..20fb7fd 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -879,7 +879,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index 6c5a726..0659655 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -313,7 +313,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index 9be9313..eee2a19 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="20180916" />
+    <meta name="Date-Revision-yyyymmdd" content="20180917" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -1005,7 +1005,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-09-16</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-09-17</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/allclasses-frame.html b/devapidocs/allclasses-frame.html
index a6cfac8..010ddcb 100644
--- a/devapidocs/allclasses-frame.html
+++ b/devapidocs/allclasses-frame.html
@@ -2650,6 +2650,7 @@
 <li><a href="org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">StoreFileInfo</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/StoreFileManager.html" title="interface in org.apache.hadoop.hbase.regionserver" target="classFrame"><span class="interfaceName">StoreFileManager</span></a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">StoreFileReader</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver" target="classFrame"><span class="interfaceName">StoreFileReader.Listener</span></a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">StorefileRefresherChore</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">StoreFileScanner</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">StoreFileWriter</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/devapidocs/allclasses-noframe.html b/devapidocs/allclasses-noframe.html
index 1441f91..344d525 100644
--- a/devapidocs/allclasses-noframe.html
+++ b/devapidocs/allclasses-noframe.html
@@ -2650,6 +2650,7 @@
 <li><a href="org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/StoreFileManager.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="interfaceName">StoreFileManager</span></a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/StoreFileReader.Listener.html" title="interface in org.apache.hadoop.hbase.regionserver"><span class="interfaceName">StoreFileReader.Listener</span></a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver">StorefileRefresherChore</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/StoreFileScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileScanner</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/738e976e/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index d9896cc..59cd7d8 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3824,21 +3824,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>"Sun Sep 16 14:43:24 UTC 2018"</code></td>
+<td class="colLast"><code>"Mon Sep 17 14:44:40 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>"e86c7360288cc077cd23af495fb443179ed0157b"</code></td>
+<td class="colLast"><code>"6d7bc0e98b25215e79f67f107fd0d3306dfcf352"</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>"a45edfd7b11ed6c5424b717c93e742a1"</code></td>
+<td class="colLast"><code>"c84d66e08b953d4447102b307c654c63"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.url">